c ++中构造函数的默认访问权限是什么

Muh*_*sim 3 c++ constructor default public

什么是构造函数的C++和默认访问,为什么

公共,私人还是受保护?

我如何通过代码检查它?

bri*_*ore 11

如果您没有自己声明构造函数,编译器将始终public为您生成一个简单的构造函数.它们还将隐式创建公共副本构造函数和副本赋值运算符.

从c ++标准12.1.5开始:

如果类X没有用户声明的构造函数,则不会将没有参数的构造函数隐式声明为默认值.隐式声明的默认构造函数是其类的内联公共成员.

12.8.7和12.8.11:

如果类定义没有显式声明复制构造函数,则会隐式声明一个.[...]隐式声明的复制/移动构造函数是其类的内联公共成员.

最后12.8.18,12.8.20,12.8.22:

如果类定义未显式声明复制赋值运算符,则会隐式声明一个.[...]如果类X的定义没有显式声明一个移动赋值运算符,那么将隐式声明一个[...].隐式声明的复制/移动赋值运算符是其类的内联公共成员.

如果您使用c++11移动构造函数将不会始终生成.有关更多信息,请参见第12.8.20节.