はじめに
自分で作成したクラスのメンバ変数が、constメンバ変数であった場合、デフォルトの代入演算子では正しく代入できません。
そのため、代入演算子を自分で実装します。
例えば、nameとageというメンバ変数があったとしまして、ageだけconstメンバ変数の場合は、代入演算子でageの値のみ変更させるようにします。
コード
#include <iostream> class Person { public: // 参照 const std::string m_name; int m_age; // コンストラクタ Person(const std::string name, int age) : m_name(name), m_age(age) { } // 代入演算子 Person &operator=(const Person &obj){ // ageだけコピー。nameはconstなのでコピーしない this->m_age = obj.m_age; return *this; } }; int main(void){ Person person1("Mickey", 15); Person person2("Tom", 30); // 名前はconstであるため、不変。年齢だけ変更されます。 person1 = person2; std::cout << person1.m_name << std::endl; std::cout << person1.m_age << std::endl; }
Mickey 30