Где мне реализовать эту «частную» вспомогательную функцию?

Мое определение класса распространяется по заголовкам и исходным файлам:

// T.hpp

class T {
   public:
      void foo();
};

// T.cpp

void T::foo() {

}

If T :: foo должен использовать некоторую вспомогательную функцию, которая должна быть видна только T , какое из следующих решений лучше?

1. Частный член

// T.hpp

class T {
   public:
      void foo();
   private:
      void helper();
};

// T.cpp

void T::foo() {
    helper();
}

void T::helper() {
}

2. Бесплатная функция доступна только в TU определения класса

// T.hpp

class T {
   public:
      void foo();
};

// T.cpp

namespace {
    void helper() {}
}

void T::foo() {
    helper();
}

Есть ли какая-нибудь разница, кроме того, что в первом случае я добавлю больше функций в заголовочный файл?

11
задан Lightness Races with Monica 5 January 2012 в 17:35
поделиться