use*_*352 2 c++ constructor initialization const g++
我听说const成员必须明确初始化,但以下编译对我来说:
class someClass
{
int const x;
};
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果一个类具有const限定的成员变量,那么对于为该类定义的任何构造函数,必须在构造函数初始化列表中初始化这些变量.如果任何已定义的构造函数未初始化const限定的成员变量,则该程序格式错误.
在您的示例代码中,someClass没有用户声明的构造函数,因此存在一个隐式声明的默认构造函数.但是,如果未使用该构造函数,则不会定义它.由于您没有实例化任何someClass对象,因此不使用构造函数.因此,您的示例代码没有任何错误.
如果要为类定义构造函数而不初始化const成员,
class someClass
{
someClass() { } // error, does not initialize const-qualified x
int const x;
};
Run Code Online (Sandbox Code Playgroud)
或者如果你要实例化一个实例someClass(这将导致隐式声明的默认构造函数被定义),那么该程序将是错误的.