C++のメモ - 値型と参照型
値型と参照型はクラス設計で重要な要素である。

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は参照型クラスとすべきである。

また、このことと非常に密接な関係にあるのがコピーである。参照型クラスでは定義よりコピーした段階でそれは同一ではなくなる。一方で、値型クラスではコピーしても値が同じ限り同一である。