初始化變量的問題

《劍指offer》上的代碼。ios

構造函數的初始化列表是C++中常用的一個概念。在C++中,成員變量的初始化順序只與它們在類中聲明的順序有關,而與在初始化列表中的順序無關,因此先用n2+2去初始化n1。因爲n2還沒沒有被初始化,所以它的值是隨機的。用此時的n2加上2去初始化n1,n1的值只是一個隨機值。接下來再用0初始化n2,所以最終n2的值是0。函數

#include <iostream>
using namespace std;

class A
{
private:
    int n1;
    int n2;
public:
    A():n2(0),n1(n2+2)
    {

    }
    void print()
    {
        cout<<"n1:"<<n1<<",n2:"<<n2<<endl;
    }
};

int main()
{
    A a;
    a.print();
    return 0;
}

結果:spa

n1是個隨機值,n2=0code

另外全局變量或者靜態變量。若是沒有初始化,默認爲0。blog

#include <stdio.h>
int i;
int main()
{
  int j;  
  static int m;
  printf("%d\t%d\t%d\n",i,j,m);
  return 0;
}

結果:io

i,m都是0,j是個隨機值class

相關文章
相關標籤/搜索