オブジェクトを正しくカプセル化する方法がわかりません。カプセル化の混乱
例:
struct Car {
int wheels = 0;
int doors = 0;
};
class A{
Car myCar;
public:
// 1st method
Car getCar() const { return myCar; }
void setCar(Car c) { myCar = c; }
// 2nd method
Car &getCarReference() { return myCar; }
// 3rd method
Car *getCarPointer() { return &myCar; }
};
私は第一の方法は、例に示すような構造が小さければ結構です、私の構造のコピーを作成します理解しています。しかし、構造体が100,000の二重値を含む場合はどうでしょうか? 2番目の方法を使うべきですか?または、構造体ポインタを宣言し、動的にメモリを割り当て、3番目のメソッドを使用しますか?私はあなたが欲しいものを想定し
[*戻り値の最適化*](https://en.wikipedia.org/wiki/Return_value_optimization)と[* copy elision]についての記事を読んでください。 *](https://en.wikipedia.org/wiki/Copy_elision)。最適化をマイクロ管理することは決してありません。常に良い、保守可能で読みやすい* working *コードを書いてください。パフォーマンスが "十分に良い"ものでない場合は、ボトルネックを見つけてそれらを最適化するために測定、プロファイル、およびベンチマークを行います。 –
質問のタイトルは少し誤解を招く。問題は、値型と、カプセル化とは無関係な参照型のいずれかのsematicsに関するものと思われます。 – Codor
'const'リファレンスについてもお読みください。それは助けになるはずです。 – elimad