Al escribir un método auxiliar para una clase en C++, ¿debería declararse como un método privado en la definición de la clase en el archivo de encabezado (.h)? Por ejemplo:¿Debe una función auxiliar ir en el encabezado o en el archivo de implementación?
/*Foo.h*/
class Foo {
public:
int bar();
private:
int helper();
};
...
/*Foo.cpp*/
...
int foo::bar() {
int something = this->helper();
}
int foo::helper() {
...
}
O, alternativamente, es mejor no la declara como un miembro privado de la clase, y en su lugar sólo hacen que sea una función independiente en la ejecución?
/*Foo.h*/
class Foo {
public:
int bar();
};
...
/*Foo.cpp*/
...
int Foo::bar() {
int something = helper();
...
}
int helper() {
...
}
Para expandir su segundo párrafo: [prefiere las funciones de no miembro que no sean amigos] (http://www.drdobbs.com/cpp/how-non-member-functions-improve-encapsu/184401197). Si una función no necesita acceso privado, no le dé acceso privado. –
@sftrabbit: gracias. Agudé el segundo párrafo un poco. –