我很确定这是一个重复的问题,但是我已经搜索了一段时间,但没有任何更聪明的方法。
想象一下这堂课:
class Entity {
public:
int x, y;
Entity() : x(0), y(0) { }
Entity(int x, int y) : x(x), y(y) { }
}
Run Code Online (Sandbox Code Playgroud)
这是初始化类的多种方法:
Entity ent1;
Entity ent2();
Entity ent3(1, 2);
Entity ent4 = Entity();
Entity ent5 = Entity(2, 3);
Run Code Online (Sandbox Code Playgroud)
我也知道,有可能在堆内存中创建一个对象,但这对我来说并不是一个很大的谜。
这是我想我知道的
ent1-使用默认构造函数,因此x = 0和y = 0
ent2-使用默认构造函数,因此x = 0和y = 0(不确定)
ent3-构造函数,所以x = 1和y = 2
ent4-默认构造函数,因此x = 0和y = 0
ent5-构造函数,所以x = 2和y = 3
如果我错了纠正我。但是我的问题是,初始化对象的这些方式之间有什么区别?
我不确定何时应该使用哪一个。