const参照の代わりにポインタを渡すだけでコピーコンストラクタを書くことができますか? (私はかかわらず、任意の値を変更するつもりはないことを確認している場合、それは大丈夫でしょうか?)ので、同様コンストラクタをコピーする - C++
:代わりの
SampleClass::SampleClass(SampleClass* p)
{
//do the necessary copy functionality
}
:事前に
SampleClass::SampleClass(const SampleClass& copyObj)
{
//do the necessary copy
}
感謝を。
ありがとうございました。だから、ポインタを取り込むコンストラクタを書くと(私のコピーコンストラクタだと思う)、コンパイラはデフォルトのコピーコンストラクタを提供しています。その場合、コンストラクタ(私のコピーコンストラクタだと思います)は呼び出されず、デフォルトのコピーコンストラクタが呼び出されます。とった。それは渡す値によるために有用であることがあります場合
。エラーが他のコードにあるので、事実の後にNULLをテストすると便利ではありません。実際、コンパイラは、正しいプログラムで決して実行できないため、テストの 'if(&MyClassCopy == NULL)'を最適化できます。 –
私は、NULLポインタの逆参照が無効な操作であることに同意し、逆参照操作の前にNULLのテストを行うのが最善です。しかし、実行時にNULLを割り当てることができるため、ほとんどのコンパイラではNULL参照を作成することができ、コンパイラがそれをチェックする方法はありません。またはNULLのテストを最適化するために、。あなたはg ++でそれを試すことができ、テストは動作します。 – Rob
一瞬のリフレクションの後、あなたは正しいです、逆参照操作の前にnullをテストしなければなりません。事実後のテストは確かに未定義です。 – Rob