如果我这样做:
这里使用复制构造函数来初始化
只有在
我看到了 this。
这很有趣。它是初始化,并使用了
那就是使用带有
MyClass a=b;
这里使用复制构造函数来初始化
a
,没有涉及到重载的 =
操作符,对吗?只有在
a
已经被初始化后,再将其分配给其他值时才会使用 =
操作符。我看到了 this。
S(std::initializer_list<T> l) : v(l) {
用法如下:
S<int> s = {1, 2, 3, 4, 5}; // direct list-initialization
这很有趣。它是初始化,并使用了
=
运算符,但却调用了一个不是复制构造函数的构造函数。为什么它不改为使用以下语法:S<int> s {1, 2, 3, 4, 5};
那就是使用带有
std::initializer_list
的std::vector
构造函数的方式。当这个运算符不调用复制构造函数时,使用=
运算符来初始化对象似乎很令人困惑,不是吗?