【发布时间】:2019-10-23 03:09:59
【问题描述】:
考虑以下(简化的)情况:
class Foo
{
private:
int evenA;
int evenB;
int evenSum;
public:
Foo(int a, int b) : evenA(a-(a%2)), evenB(b-(b%2)), evenSum(evenA+evenB)
{
}
};
当我像这样实例化 Foo 时:
Foo foo(1,3);
那么evenA为0,evenB为2,但是evenSum会被初始化为2吗?
我在我当前的平台 (iOS) 上尝试过,它似乎可以工作,但我不确定这段代码是否可移植。
感谢您的帮助!
【问题讨论】:
-
这是 C++ 中的危险角落之一。
-
键盘是查看此类内容的好地方:codepad.org/uFgZpkwN
-
@Agent_L:这不会告诉你代码是否可移植。
-
@OliCharlesworth 没有,但有时它会告诉你是否不是。
标签: c++ initialization-list member-variables