Copyコンストラクタの必要性がいまいちわかっていない。。。 クラスのメンバ達の値を新しいオブジェクトにコピーするって感じで合ってるのやら。。
とりあえず、Copyコンスラクタの定義です。
class Sample { private: char a {"wawawa"}; char b; char c; public: //copy constructor prototype sample (const Sample &source); //destructor ~sample(); } Sample::Sample (const Sample &source) : a{source.a}, b{source.b}, c{source.c} { }
上記みたいな感じで、クラス名のconstリファレンスって感じ。
なんか例えば、下記みたいに、
void some_method(Sample p) { cout << p.a << endl; } //Copy Constructor Sample::Sample (const Sample &source) : a{source.a}, b{source.b}, c{source.c} { } int main() { Sample xxx; some_method(xxx);
って存在した場合、some_methodで渡されたSampleクラスのxxxは、まずsome_method内の引数であるpにコピーされる。
その時点で呼び出されるのがコピーコンストラクタとなる。って流れ
また、some_methodのスコープ外になったら、ちゃんとデストラクタも動きます。pオブジェクトを消さないといけないからです。
まあ、なんとなくクラスを関数に渡す際なんかに、役に立つものなのかな?って感じで消化したのですが、
関数をcallした時に値をそのまま渡した際に役立ちそうっぽいですね。(リファレンスやポインタで値を渡さない場合)