1

假设我们有一个类 A 包含作为同一类的成员:

Class A{
   const A &a;
}

我想创建一个传递该成员值的参数化构造函数,但我不想定义该类的复制构造函数。

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

怎么能指示编译器这样的事情?

谢谢

4

2 回答 2

4

您可以将此构造函数定义为explicit.

(对于可以使用一个参数调用的所有构造函数,这是一个很好的规则。)

于 2012-11-16T09:07:52.803 回答
4

可以只引用它所构造的类的构造函数复制构造函数,无论您是否希望它是一个。复制构造函数是这样定义的:

如果非模板构造class X函数的第一个参数是、或类型X&,并且没有其他参数,或者所有其他参数都有默认参数,那么它就是一个复制构造函数。const X&volatile X&const volatile X&

您可以声明它explicit以限制如何复制类(A a = A()例如防止),但只要它具有该签名,它仍然是一个复制构造函数。

于 2012-11-16T09:23:28.850 回答