値型と参照型はクラス設計で重要な要素である。
intやdouble,std::string, 画像,行列: 値型クラス
その他: 参照型
例えばStudentクラスについて考える。
上記クラスで同姓同名の人物は同一人物であろうか?異なるならばStudentは参照型クラスとすべきである。
また、このことと非常に密接な関係にあるのがコピーである。参照型クラスでは定義よりコピーした段階でそれは同一ではなくなる。一方で、値型クラスではコピーしても値が同じ限り同一である。
- 値型: 内部データが同じならば同じものとして扱う。
- 参照型: 内部データが同じでも異なるものとして扱う。
intやdouble,std::string, 画像,行列: 値型クラス
その他: 参照型
例えばStudentクラスについて考える。
class Student { public: Student(const std::string name) : name_(name) {} Student(const char* name) : name_(name) {} private: const std::string name_; };
上記クラスで同姓同名の人物は同一人物であろうか?異なるならばStudentは参照型クラスとすべきである。
また、このことと非常に密接な関係にあるのがコピーである。参照型クラスでは定義よりコピーした段階でそれは同一ではなくなる。一方で、値型クラスではコピーしても値が同じ限り同一である。
コメントをかく