参数化构造函数不是复制构造函数

时间:2012-11-16 09:05:36

标签: c++ constructor

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

Class A{
   const A &a;
}

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

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

怎么能指示编译器这样的东西?

由于

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

只能引用它构造的类的构造函数是一个复制构造函数,无论你是否希望它是一个。因此定义了复制构造函数:

  

class X的非模板构造函数是第一个参数类型为X&const X&volatile X&const volatile X&的复制构造函数,并且要么没有其他参数,要么所有其他参数都有默认参数。

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