Poniżej mówi się, że lepiej jest mieć pierwszych/drugich członków publicznych. Uważam, że to prawie tak źle. Jeśli dajesz sposób na dostęp do prywatnej zmiennej poza klasą, to jaki jest sens? Nie powinny być funkcjeCzy zwróciło się odwołanie do złych praktyk zmiennych zmiennych?
T First(); void(or T) First(const T&)
Próbka:
// Example 17-3(b): Proper encapsulation, initially with inline accessors. Later
// in life, these might grow into nontrivial functions if needed; if not, then not.
//
template<class T, class U>
class Couple {
Couple() : deleted_(false) { }
T& First() { return first_; }
U& Second() { return second_; }
void MarkDeleted() { deleted_ = true; }
bool IsDeleted() { return deleted_; }
private:
T first_;
U second_;
bool deleted_;
};
+1, ale istnieje kontrproporcja dla zapewnienia dostępu: można dodać oprzyrządowanie do wywołania, co ułatwia znajdowanie miejsc, w których obiekt jest aktualizowany w kodzie, lub dołączanie debuggera w celu wykrycia problemów. –
Dla ciebie informacji w przykładzie mówiono o klasach, które mają prywatnych członków stąd 'bool deleted_;'. Lubię POD –
@David: Nie jestem przeciwnikiem dostępu, jak w 'T get()/void set (T)', w którym możesz skutecznie śledzić zmiany swoich wartości, zapewniać leniwą kalkulację i wiele innych rzeczy, ale Jedynym ciekawym ciekawostką w 'T & access()' jest "śledzenie", że uzyskano dostęp, który nie przynosi wiele do stołu. –