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