1 c++ oop constructor variable-initialization
这两个构造函数有什么区别?
int x, y; //position
BasePoint(int px, int py) : x(px), y(py) {}
Run Code Online (Sandbox Code Playgroud)
和
int x, y; //position
BasePoint(int px, int py)
{
x = px;
y = py;
}
Run Code Online (Sandbox Code Playgroud)
什么x(px), y(py)叫?我什么时候使用这种类型的变量初始化?
谢谢.
第一个是做初始化使用initialization-list,和第二个是做赋值使用赋值运算符.
推荐第一个!
BasePoint(int px, int py) : x(px), y(py) {}
^^^^^^^^^^^^^ this is called initialization-list!
Run Code Online (Sandbox Code Playgroud)
阅读此FAQ:我的构造函数应该使用"初始化列表"还是"赋值"?
FAQ答案始于:
初始化列表.实际上,构造函数应该初始化初始化列表中的所有成员对象.进一步讨论了一个例外[...]
阅读完整的答案.