1
yujincheng08 2021-04-03 20:01:47 +08:00 via Android
用 {} 的话,在有接收 initializer_list 的构造函数时候有区别。
另外就是 return 时候可以用 {} 当场后续一个对象。 |
2
misakawaque OP |
3
page4aq 2021-04-04 14:10:29 +08:00
和 (), {} 没关系。
int a, n, p, q; task1(int a, int n) :a(a), n(a), p{ n }, q(n) 构造函数参数和类成员变量重名。一般不会这么定义。 |
4
yujincheng08 2021-04-05 16:07:51 +08:00
@misakawaque
```cpp #include <initializer_list> #include <iostream> struct Test { template <typename T> Test(const std::initializer_list<T> &) { std::cout << "ctor w/ initializer_list" << std::endl; } template<typename ...T> Test(T&&...) { std::cout << "ctor w/o initializer_list" << std::endl; } }; Test test() { return {1,2,3,4}; } int main() { Test x{1,2,3,4}; Test y(1,2,3,4); auto z = test(); return 0; } ``` Output: ``` ctor w/ initializer_list ctor w/o initializer_list ctor w/ initializer_list ``` |