2012-04-10 6 views
1

同じクラスのオブジェクトへのポインタをとるクラスコンストラクタを持つことは理にかなっています。この考え方は、古いオブジェクトから新しいオブジェクトにすべてのデータをコピーすることです。同じクラスオブジェクトへのポインタを使用するC++クラスのコンストラクタ

class Shape { 
    ... 
    public: 
     Shape(string,string,...) 
     Shape(Shape*) 
} 

Shape::Shape(Shape* ref) { 
    layer = ref->layer; 
    purpose = ref->purpose; 
    ... 
} 
+2

それは単なるコピーコンストラクターのポインターバージョンです。通常これはconst参照で行われます。詳細はこちらの記事を参照してください。http://en.wikipedia.org/wiki/Copy_constructor –

答えて

1

いいえ、これは紛らわしいあいまいさとハードツーキャッチエラー(オブジェクトへのポインタからの自動変換、誰?)につながります。ポインターから初期化すると明示的になります:

Shape s2 = *s1; 
+0

ナイトクラッカーに感謝します。これは理にかなっています。 –

関連する問題