Pisząc metodę pomocniczą dla klasy w C++, czy powinna być zadeklarowana jako prywatna metoda w definicji klasy w pliku nagłówkowym (.h)? Na przykład:Czy funkcja pomocnika powinna znajdować się w nagłówku lub w pliku implementacji?
/*Foo.h*/
class Foo {
public:
int bar();
private:
int helper();
};
...
/*Foo.cpp*/
...
int foo::bar() {
int something = this->helper();
}
int foo::helper() {
...
}
lub alternatywnie, jest to nie lepiej zadeklarować go jako prywatny członka klasy, a zamiast tego po prostu zrobić to funkcja wolnostojący w realizacji?
/*Foo.h*/
class Foo {
public:
int bar();
};
...
/*Foo.cpp*/
...
int Foo::bar() {
int something = helper();
...
}
int helper() {
...
}
Aby rozwinąć akapit drugi: [preferuj nie-przyjacielskie funkcje nie będące członkami] (http://www.drdobbs.com/cpp/how-non-member-functions-improve-encapsu/184401197). Jeśli funkcja nie wymaga dostępu prywatnego, nie udzielaj jej prywatnego dostępu. –
@ftopbit: dzięki. Lekko zaostrzyłem akapit drugi. –