我是 C++ 的新手,我有一个问题...
我尝试通过制作测试应用程序自己回答这个问题...在调试中,B 类初始化生成的汇编代码较少,但在 Release模式中,我真的不能说...它优化了初始化:(
假设我有两个类:
class A
{
public:
int a, b, c, d;
A(int _a, int _b, int _c, int _d) : a(_a), b(_b), c(_c), d(_d)
{
}
};
class B
{
public:
int a, b, c, d;
};
使用有什么好处
B b = {1, 2, 3, 4}
代替
A a = A(1, 2, 3, 4);
?
最佳答案
对于全局对象和静态类成员,初始化列表不会在运行时调用任何代码。 (初始化数据直接存储在二进制文件中)。
如果您正在初始化大量对象,或者如果构造函数代码昂贵/庞大,这可能会在加载时产生显着差异。
如前所述,这仅适用于普通旧数据,即可以使用 C++ < 0x 中的初始化列表初始化的所有内容
关于c++ - 使用聚合初始化列表优于构造函数的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902077/