Quando si scrive un metodo helper per una classe in C++, dovrebbe essere dichiarato come metodo privato nella definizione della classe nel file di intestazione (.h)? Per esempio:La funzione di supporto dovrebbe andare nell'intestazione o nel file di implementazione?
/*Foo.h*/
class Foo {
public:
int bar();
private:
int helper();
};
...
/*Foo.cpp*/
...
int foo::bar() {
int something = this->helper();
}
int foo::helper() {
...
}
Oppure, in alternativa, è meglio non dichiararla come un membro privato della classe, e invece solo ne fanno una funzione di free-standing per l'attuazione?
/*Foo.h*/
class Foo {
public:
int bar();
};
...
/*Foo.cpp*/
...
int Foo::bar() {
int something = helper();
...
}
int helper() {
...
}
Per espandere il secondo paragrafo: [preferisce le funzioni di non membro non amico] (http://www.drdobbs.com/cpp/how-non-member-functions-improve-encapsu/184401197). Se una funzione non ha bisogno di accesso privato, non dargli accesso privato. –
@sftrabbit: grazie. Ho affinato un po 'il secondo paragrafo. –