假设我们有一个类 A 包含作为同一类的成员:
Class A{
const A &a;
}
我想创建一个传递该成员值的参数化构造函数,但我不想定义该类的复制构造函数。
A(const A& memberA): a(memberA) {}
怎么能指示编译器这样的事情?
谢谢
假设我们有一个类 A 包含作为同一类的成员:
Class A{
const A &a;
}
我想创建一个传递该成员值的参数化构造函数,但我不想定义该类的复制构造函数。
A(const A& memberA): a(memberA) {}
怎么能指示编译器这样的事情?
谢谢
您可以将此构造函数定义为explicit
.
(对于可以使用一个参数调用的所有构造函数,这是一个很好的规则。)
可以只引用它所构造的类的构造函数是复制构造函数,无论您是否希望它是一个。复制构造函数是这样定义的:
如果非模板构造
class X
函数的第一个参数是、或类型X&
,并且没有其他参数,或者所有其他参数都有默认参数,那么它就是一个复制构造函数。const X&
volatile X&
const volatile X&
您可以声明它explicit
以限制如何复制类(A a = A()
例如防止),但只要它具有该签名,它仍然是一个复制构造函数。