非是非
Thinking, Express
|

测验题目

问题:
    #include <iostream>
    
    class A{
    private:
      int n1;
      int n2;
    
    public:
    
      A(): n2(0), n1(n2 + 2){ }
    
      void print(){
        std::cout << "n1: " << n1 << ", n2: " << n2 << std::endl;
      }
    
    };
    
    
    int main(int argc, char *argv[]){
      A a;
      a.print();
    
      return 0;
    }
    参考答案:
    输出n1是一个随机的数字,n2为0。在C++中,成员变量的初始化顺序与变量在类型中的申明顺序相同,而与它们在构造函数的初始化列表中的顺序无关。因此在这道题中,会首先初始化n1,而初始n1的参数n2还没有初始化,是一个随机值,因此n1就是一个随机值。初始化n2时,根据参数0对其初始化,故n2=0。
    非是非 | 联系 | 关于 | 向开发者捐赠 |

    版权所有 © 非是非, 2007~2015

    我觉得这个站点或页面: 有用 没用 有趣 无趣 有错 |