同じクラスのメンバーとして含まれるクラス A があるとします。
Class A{
const A &a;
}
そのメンバーの値を渡すパラメーター化されたコンストラクターを作成したいのですが、クラスのコピー コンストラクターを定義したくありません。
A(const A& memberA): a(memberA) {}
コンパイラにそのようなことをどのように示すことができますか?
ありがとう
同じクラスのメンバーとして含まれるクラス A があるとします。
Class A{
const A &a;
}
そのメンバーの値を渡すパラメーター化されたコンストラクターを作成したいのですが、クラスのコピー コンストラクターを定義したくありません。
A(const A& memberA): a(memberA) {}
コンパイラにそのようなことをどのように示すことができますか?
ありがとう
構築するクラスへの参照のみを受け取ることができるコンストラクターは、コピー コンストラクターにするかどうかに関係なく、コピー コンストラクターです。コピー コンストラクターは次のように定義されます。
の非テンプレート コンストラクターは、最初のパラメーターの型が 、、またはであり、他のパラメーターがないか、他のすべてのパラメーターに既定の引数がある
class X
場合、コピー コンストラクターです。X&
const X&
volatile X&
const volatile X&
explicit
クラスのコピー方法を制限するために宣言することもできますが (たとえば、防止A a = A()
するなど)、その署名がある限り、コピー コンストラクターのままです。
このコンストラクターは として定義できますexplicit
。
(これは、1 つのパラメーターで呼び出すことができるすべてのコンストラクターにとって適切な規則です。)