xml*_*lmx 13 c++ class member-initialization c++11
我遇到了一个名为"member initializer"的奇怪概念.
这里说:
C++ 11添加了成员初始化器,如果构造函数没有初始化成员本身,则表达式将应用于类范围内的成员.
它的定义是什么?
是否有一些例子来说明它的用法?
jua*_*nza 17
它可能指的是类内成员初始值设定项.这允许您在声明时初始化非静态数据成员:
struct Foo
{
explicit Foo(int i) : i(i) {} // x is initialized to 3.1416
int i = 42;
double x = 3.1416;
};
Run Code Online (Sandbox Code Playgroud)
更多关于Bjarne Stroustrup的C++ 11常见问题解答.
您现在可以在类中添加为构造函数共享的初始值设定项:
class A
{
int i = 42;
int j = 1764;
public:
A() {} // i will be 42, j will be 1764
A( int i ) : i(i) {} // j will be 1764
};
Run Code Online (Sandbox Code Playgroud)
它避免了必须在构造函数中重复初始化器,对于大型类,它可以是真正的胜利.