您不能在声明中初始化变量。
class Apple: public Fruit{
public:
bool isAppleOK;
Apple(int amount, int pHValue) : amount(amount), pHValue(pHValue),
isAppleOK(false)
{
}
~Apple() {
}
};
它不完全相关,但也使用初始化列表,因为您的编译器可能会翻译:
class Apple:public Fruit{
public:
bool isAppleOK;
Apple(int amount, int pHValue) {
amount = amount;
pHValue= pHValue;
}
~Apple() {
}
};
到
class Apple:public Fruit{
public:
bool isAppleOK;
Apple(int amount, int pHValue): amount(), phValue(),
isAppleOk() {
amount = amount;
pHValue= pHValue;
}
~Apple() {
}
};
如果您在构造函数中将复杂类型作为参数,则可能会在每个对象构造中产生一些开销,因为首先将初始化类成员,然后将其分配给新值。
使用初始化列表,这将同时完成,没有可能的开销。