1

同じクラスのメンバーとして含まれるクラス A があるとします。

Class A{
   const A &a;
}

そのメンバーの値を渡すパラメーター化されたコンストラクターを作成したいのですが、クラスのコピー コンストラクターを定義したくありません。

A(const A& memberA): a(memberA)     {}

コンパイラにそのようなことをどのように示すことができますか?

ありがとう

4

2 に答える 2

4

構築するクラスへの参照のみを受け取ることができるコンストラクター、コピー コンストラクターにするかどうかに関係なく、コピー コンストラクターです。コピー コンストラクターは次のように定義されます。

の非テンプレート コンストラクターは、最初のパラメーターの型が 、、またはであり、他のパラメーターがないか、他のすべてのパラメーターに既定の引数があるclass X場合、コピー コンストラクターです。X&const X&volatile X&const volatile X&

explicitクラスのコピー方法を制限するために宣言することもできますが (たとえば、防止A a = A()するなど)、その署名がある限り、コピー コンストラクターのままです。

于 2012-11-16T09:23:28.850 に答える
4

このコンストラクターは として定義できますexplicit

(これは、1 つのパラメーターで呼び出すことができるすべてのコンストラクターにとって適切な規則です。)

于 2012-11-16T09:07:52.803 に答える