虽然我认为这不是一个好习惯,但我使用的编译器(GNU和clang)似乎允许以下内容
int f() {return 11;}
class A {
int a = f();
public:
int tell_me() {return a;}
};
即。通过调用一个完全无关的函数来进行大括号或相等的初始化。
标准是否正确并允许?
那些执行f()
?
答案 0 :(得分:1)
标准是否正确并允许这样做?
是
执行f()后最终引入的附带效应怎么样?
执行函数时会发生副作用,这在构造A
时发生。正如他们使用初始化列表一样。