Ati*_*hay 7 c++ initialization members
如何在C++中定义类的非静态const数据成员?如果我尝试编译以下代码:
class a
{
public:
void print()
{
cout<<y<<endl;
}
private:
const int y=2;
};
int main()
{
a obj;
obj.print();
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
ISO C++ forbids initialization of member ‘y’
Run Code Online (Sandbox Code Playgroud)
tem*_*def 27
在C++ 03中,您可以const
使用构造函数中的成员初始化列表初始化类的字段.例如:
class a
{
public:
a();
void print()
{
cout<<y<<endl;
}
private:
const int y;
};
a::a() : y(2)
{
// Empty
}
Run Code Online (Sandbox Code Playgroud)
注意: y(2)
构造函数之后的语法.这告诉C++将字段初始化为y
值2.更一般地,您可以使用此语法将类的任意成员初始化为您希望它们具有的任何值.如果您的类包含const
作为引用的数据成员或数据成员,则这是正确初始化它们的唯一方法.
请注意,在C++ 11中,放宽了此限制,可以将值分配给类主体中的类成员.换句话说,如果你等待几年来编译你的原始代码,它应该编译得很好.:-)
在构造函数初始化列表中初始化它.
class a
{
const int y;
public:
a() : y(2) { }
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6690 次 |
最近记录: |