我想知道在这种情况下C++编译器是否能够进行优化。假设我们有一个类如下所示:
编译器会生成代码来设置a、b和c的默认值分别为10、11和12,然后将它们设置为50、51和52吗?或者它可以延迟分配这些初始值,并仅在以后分配值(50、51、52),因为没有读取操作?基本上,它是否必须生成代码来写入这六个值,还是可以优化为三个?
如果是这样,复杂类型(结构体、类)是否也适用?这叫什么名字,我可以在哪里阅读更多相关信息?
如果不是,为什么不是?
class Foo {
public:
Foo() : a(10), b(11), c(12) {};
int a;
int b;
int c;
};
我使用这个类的方式如下:
int main(int argc, char *argv[]) {
Foo f;
f.a = 50;
f.b = 51;
f.c = 52;
return 0;
}
编译器会生成代码来设置a、b和c的默认值分别为10、11和12,然后将它们设置为50、51和52吗?或者它可以延迟分配这些初始值,并仅在以后分配值(50、51、52),因为没有读取操作?基本上,它是否必须生成代码来写入这六个值,还是可以优化为三个?
如果是这样,复杂类型(结构体、类)是否也适用?这叫什么名字,我可以在哪里阅读更多相关信息?
如果不是,为什么不是?