没有可用的复制构造函数或复制构造函数声明为“explicit”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有可用的复制构造函数或复制构造函数声明为“explicit”相关的知识,希望对你有一定的参考价值。

哪位高手能解释一下,我看到这个一下子就晕了,根本不知道怎么弄了。

explicit表示显示的意思。比如你声明一个类:
class CMyClass
private:
int data;
public:
void setData(int value);
int getData();
;
但是没有声明构造函数,那么这就是隐式声明implicit
而:
class CMyClass
private:
int data;
public:
CMyClass(); /*这样是显式声明explicit*/
void setData(int value);
int getData();
;
参考技术A 贴代码

Java 11 中默认构造函数的可见性? [复制]

【中文标题】Java 11 中默认构造函数的可见性? [复制]【英文标题】:Visibility of a default constructor in Java 11? [duplicate] 【发布时间】:2019-08-07 16:00:44 【问题描述】:

Java11 中默认构造函数的可见性是什么? 这与构造函数的默认可见性不同。

【问题讨论】:

是什么阻止你自己去看看? ^ 也许吧,但他是专门询问 Java 11 的。 @ErvinSzilagyi:“在没有特定访问修饰符的情况下声明的成员的访问”和“由构造函数提供的默认构造函数的访问”之间存在区别。 与所有其他 Java 版本相同。 【参考方案1】:

默认构造函数的可见性取决于类的访问修饰符,如java规范Chapter 8. Classes - 8.8.9. Default Constructor中所述:

默认构造函数与类具有相同的访问修饰符,除非类缺少访问修饰符,在这种情况下,默认构造函数具有包访问权限(第 6.6 节)。

【讨论】:

以上是关于没有可用的复制构造函数或复制构造函数声明为“explicit”的主要内容,如果未能解决你的问题,请参考以下文章

即使在声明了复制构造函数之后,QObject 也会返回异常

声明构造函数私有和 =delete 有啥区别?

5 规则(用于构造函数和析构函数)过时了吗?

如何在不破坏移动和复制构造函数的情况下声明虚拟析构函数

将数组传递给构造函数会产生大小为 1 的数组? [复制]

c++ 隐式复制构造函数是不是复制数组成员变量? [复制]