在 C++ 中,常量变量初始化中的数学声明是否需要一些额外的处理?或者现代编译器会在创建 .exe 文件时自动将数学计算的结果放入变量中?
所以例如:
MyClass::MyClass()
{
const qint32 defaultX = 20;
poButton1 = new PushButton(this);
poButton1->move(defaultX,20);
poButton1 = new PushButton(this);
poButton1->move(defaultX,80);
//...
}
是在方法使用(本例中为构造函数)中使用常量变量 (defaultX) 的代码示例。现在有时最好让开发人员说出价值的来源:
MyClass::MyClass()
{
const qint32 defaultX = 800/2 - 244 + 12 + 32 - 180; //just an example!
poButton1 = new PushButton(this);
poButton1->move(defaultX,20);
poButton1 = new PushButton(this);
poButton1->move(defaultX,80);
//...
}
当然他可以把它放在评论中,但让我们假设他想这样做(例如:他很愚蠢)。那么问题是:当初始化该类的对象时,是否计算了整个数学表达式(需要额外的处理),或者当现代编译器创建 .exe 时,它已经包含在第一个 MyClass 代码中看到的优化代码?