《劍指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