复杂<>使用列表初始值设定项与构造函数?
complex<> using list initializer vs constructor?
我正在阅读 Stroustrup C++ 第 4 版。第 162 页类型和声明。具体来说,允许以下内容构造一个complex<>
对象。
书评案例A是"use constructor"。 case A 真的是一个列表初始化器,初始化的构造函数方法是在 B 或 C 中执行的吗?
#include <iostream>
#include <complex>
using namespace std;
int main(int argc, char *argv[])
{
complex<double> z = { 0, 3.14 }; // A
complex<double> h(0, 3.14); // B
complex<double> i{0, 3.14}; // C
return 0;
}
complex<double> z = { 0, 3.14 }; // A
执行 copy-list-initliazation (C++11 起).
complex<double> h(0, 3.14); // B
执行 direct initliazation.
complex<double> i{0, 3.14}; // C
执行 direct-list-initliazation (C++11 起).
这个案例的效果都是一样的;对象由 constructor complex::complex(double, double)
.
初始化
我正在阅读 Stroustrup C++ 第 4 版。第 162 页类型和声明。具体来说,允许以下内容构造一个complex<>
对象。
书评案例A是"use constructor"。 case A 真的是一个列表初始化器,初始化的构造函数方法是在 B 或 C 中执行的吗?
#include <iostream>
#include <complex>
using namespace std;
int main(int argc, char *argv[])
{
complex<double> z = { 0, 3.14 }; // A
complex<double> h(0, 3.14); // B
complex<double> i{0, 3.14}; // C
return 0;
}
complex<double> z = { 0, 3.14 }; // A
执行 copy-list-initliazation (C++11 起).complex<double> h(0, 3.14); // B
执行 direct initliazation.complex<double> i{0, 3.14}; // C
执行 direct-list-initliazation (C++11 起).
这个案例的效果都是一样的;对象由 constructor complex::complex(double, double)
.