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

Parametized Constructor Not an Copy one

本文关键字:构造函数 复制 参数      更新时间:2023-10-16

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

Class A{
   const A &a;
}

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

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

如何指示编译器这样的事情?

谢谢

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

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

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

您可以将

此构造函数定义为 explicit

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