通过函数调用进行大括号或相等的初始化

时间:2015-04-02 08:44:45

标签: c++ function initialization list-initialization

虽然我认为这不是一个好习惯,但我使用的编译器(GNU和clang)似乎允许以下内容

      int f() {return 11;}

      class A {

          int a = f();
          public:
          int tell_me() {return a;}
              };

即。通过调用一个完全无关的函数来进行大括号或相等的初始化。

标准是否正确并允许? 那些执行f()

最终引起的附带影响呢?

1 个答案:

答案 0 :(得分:1)

  

标准是否正确并允许这样做?

  

执行f()后最终引入的附带效应怎么样?

执行函数时会发生副作用,这在构造A时发生。正如他们使用初始化列表一样。