【问题】
下面四条语句有什么区别吗?
SomeType t = u;
SomeType t(u);
SomeType t();
SomeType t;
【解答】
- SomeType t;
这是调用的是默认构造函数初始化。
- SomeType t();
这个只是函数声明,这个函数没有参数并返回类型为SomeType。
- SomeType t(u);
这里直接初始化,即有参构造。
- SomeType t = u;
这个使用拷贝构造函数的初始化。
【原则】
建议总是使用SomeType t(u)的形式,因为这种形式可以适用任何地方,并且还有更多的有点——可以多个参数。