nit*_*ian 4 c++ constructor constants default-constructor
可能重复:
未初始化的常量
我知道需要初始化 const 对象。
所以对于下面的代码,
class sample
{};
int main()
{
const sample obj;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器会抱怨,因为 const 对象obj没有初始化。
但是当我使用默认构造函数修改代码(如下所示)时,编译器不会抛出任何错误。
class sample
{
public:
sample() { }
};
int main()
{
const sample obj;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
新添加的默认ctor做了哪些让编译器满意的事情?
新添加的默认ctor做了哪些让编译器满意的事情?
因为这是 C++ 标准在使用const限定符声明对象时强加的要求。
参考:
C++03 8.5 初始化器 8 声明器
§9:
如果没有为对象指定初始化程序,并且该对象是(可能是 cv 限定的)非 POD 类类型(或其数组),则该对象应默认初始化;如果对象是 const 限定类型,则基础类类型应具有用户声明的默认构造函数。否则,如果没有为非静态对象指定初始化器,则该对象及其子对象(如果有)具有不确定的初始值 90);如果对象或其任何子对象是 const 限定类型,则程序格式错误。