lo scopo di oop utilizzando le classi è incapsulare i membri da outer space
. Ho sempre letto che l'accesso ai membri dovrebbe essere fatto con metodi. per esempio:
template<typename T>
class foo_1 {
T state_;
public:
// following below
};
il più comune che faceva il mio professore era di avere un metodo get e set.
// variant 1
T const& getState() { return state_; }
void setState(T const& v) { state_ = v; }
o così:
// variant 2
// in my opinion it is easier to read
T const& state() { return state_; }
void state(T const& v) { state_ = v; }
si supponga che state_
sia una variabile, che viene controllata periodicamente e non è necessario garantire che il valore (stato) sia coerente. C'è qualche svantaggio nell'accedere allo stato per riferimento? ad esempio:
// variant 3
// do it by reference
T& state() { return state_; }
o anche direttamente, se dichiaro la variabile come pubblica.
template<typename T>
class foo {
public:
// variant 4
T state;
};
Nella variante 4 potrei persino assicurare la coerenza usando l'atomico c ++ 11.
Quindi la mia domanda è, quale preferisco ?, C'è uno standard di codifica che potrebbe declinare uno di questi pattern?
per alcuni codici vedi qui