>>27
年齢という数値だけを持つPersonというクラスを

class Person {
public:
 explicit Person(int age) : age_(age) {}
 int getAge() const { return age_; }
 void setAge(int x) { age_ = x; }
private:
 int age_;
};

と実装して、クライアントに "Person a; int age = a.getAge();" と
書かせるようにするか、もしくは簡潔に

struct Person { int age; };

と実装して、クライアントに "Person a; int age = a.age;" と
書かせるようにするか、どっちがいいのかってこと。
…と考えればわかりやすいかな?

一般に、あるクラスのすべてのデータメンバが他のデータメンバと完全に独立してて、
外部とのインタフェースがget/setしか存在しないなら、
上記のどちらでも良くて好みの問題。
前者はデータメンバをprivateにしているが、実際のところ隠蔽している意味がない。
# ただ、前者からsetだけ取り外すと若干様子が変わるけど

>>33が言っているのは、意味的に等価なら前者のコードは単なる無駄なんじゃないか
ってこと。漏れも同意で、盲目的な雪駄と下駄は個人的には面倒なので使わないな。