cpp*_*der 4 c++ member-initialization
可能重复:
C++初始化列表
成员初始化和类中的直接初始化有什么区别?这个类中定义的两个构造函数有什么区别?
class A
{
public:
int x;
int y;
A(int a, int b) : x(a), y(b)
{}
A(int a, int b)
{
x = a;
y = b;
}
};
Run Code Online (Sandbox Code Playgroud)
其他成员给出了理论答案.
实际上,在这些情况下使用成员方式初始化:
MyClass & mMyClass).您需要执行成员初始化,否则,它不会编译.const MyClass mMyClass.您还需要进行成员初始化,否则,它不会编译.MyClass mMyClass没有构造函数MyClass::MyClass()).您还需要进行成员初始化,否则,它不会编译.MyClass mMyClass和sizeof(MyClass) = 1000000000).使用成员初始化,您只需构建一次.通过构造函数中的直接初始化,它构建了两次.第一个使用初始化,第二个不使用初始化,它使用赋值。在第二个中,成员xandy首先默认初始化(使用零),然后分别分配给它们a和b。
还要注意的是,在第二个,成员是默认初始化只有当该类型的成员都具有不平凡的默认构造函数。否则,没有初始化(如@James 在评论中指出的)。
现在看这个话题就知道:
| 归档时间: |
|
| 查看次数: |
3465 次 |
| 最近记录: |