请问复制初始化问题
class T {
public:
T() { }
T(int i) { }
T(const T &t) { }
};
int main()
{
T t; // 默认初始化
T u(100); //直接初始化
T v(u); // 复制初始化
T w = 100; //*
T x = T(100); //*
}
像上面打*号的二行,是复制初始化,还是直接初始化呢?
按道理应该是复制初始化,就是先调用带int参数的构造函数创建临时对象,再调用复制初始化构造。
但我用g++编译运行,最后二句没有调用复制初始化构造函数,而是只直接调用了一次带int参数的构造函数。
谁能解释一下?