C++相談室 part51
■ このスレッドは過去ログ倉庫に格納されています
0037デフォルトの名無しさん
2006/07/17(月) 16:38:18年齢という数値だけを持つ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が言っているのは、意味的に等価なら前者のコードは単なる無駄なんじゃないか
ってこと。漏れも同意で、盲目的な雪駄と下駄は個人的には面倒なので使わないな。
■ このスレッドは過去ログ倉庫に格納されています