TOP

C++的一些基礎細節(備考用)
2014-11-13 00:25:11 】 瀏覽:9902
Tags:

  class node


  {


  public:


  node(){cout<<"constructor node()"<


  ~node(){cout<<"destructor ~node()"<


  };


  class nn


  {


  public:


  node x;


  nn(){cout<<"con nn()"<


  ~nn(){cout<<"des ~nn()"<


  };


  int main()


  {


  nn a;


  return 0;


  }


  幾年前的一份C++筆記。


  看完了Bruce Eckel的Thing in C++(Volume 1),實踐比較少,感覺還是半懂不懂,馬上就要【面向對象程序設計】的考試了。考的是C++的東西,做了幾份C++的卷子,感覺好多細節的東西還是很不確定,不敢下手。于是今天把老師的課件翻了出來,整理了一下,做了個小結。雖然感覺很亂,但是對于我自己來說,還是能看懂,很多東西都很顯而易見的也寫了,無論怎樣,只是為了考試^_^


  --------------------------------------------------------------------------------


  extern int xx 這是一個聲明,而不是定義


  --------------------------------------------------------------------------------


  在class temp中只定義一個static int b;


  1 sizeof(temp) = 1;


  這是為什么?


  static 變量是這個類共享的优乐棋牌app下载,變量是放在全局變量區,不是堆棧里,因此sizeof出來不算在這個static int的大小;是這樣的嗎??


  --------------------------------------------------------------------------------


  枚舉類型的變量只能進行賦值運算


  --------------------------------------------------------------------------------


  指針int *p,后不能直接進行*p = 12這樣的賦值,因為指針p沒有申請內存


  --------------------------------------------------------------------------------


  如何解釋以下程序?


  1 int main()


  2 {


  3 int *a;


  4


  5 a = (int *)"string";


  6 cout<<*a<


  7 cout< <>


  8 return 0;


  9 }


  a指向一個string常量的,強制轉換為int *,因此a還是"string"常量的首地址,*a應該是取前面幾位的值


  --------------------------------------------------------------------------------


  析構函數的調用不一定要大括號


  如


  class node


  {


  public:


  node(){cout<<"node()"<


  ~node(){cout<<"~node()"<


  };


  int main()


  {


  if(1)


  node n;


  cout<<"out of if"<


  return 0;


  }


  輸出為


  node()


  ~node()


  out of if


  另外,一個大括號就是一個scope,不管有沒有if,while等語句


  --------------------------------------------------------------------------------


  if(!cin)


  相當于if(cin.fail())


  !的運算符在這里被重載了


  --------------------------------------------------------------------------------


  函數中的static變量在結束main()的時候才釋放,但是在全局變量之前


  --------------------------------------------------------------------------------


  全局變量區:全局變量,靜態全局變量优乐棋牌app下载,靜態本地變量


  stack:本地變量


  heap:申請的變量,例如,new,malloc


  要注意的是new和malloc不能混用


  --------------------------------------------------------------------------------


  class 中的public表示所有的object都能訪問


  private只能讓類聲明的函數和friend函數訪問


  protected可以子類訪問,也可以被friend函數訪問


  --------------------------------------------------------------------------------


  無論是數組還是指針,傳到函數中都變為指針


  --------------------------------------------------------------------------------


  只有在沒有構造函數的情況下,編譯器才自動分配一個構造函數,否則优乐棋牌app下载,只要


  編譯器看到一個構造函數,就不會生成一個構造函數。


  另外,編譯器自動生成的構造函數是沒有參數的。


  --------------------------------------------------------------------------------


  根據函數的參數的個數或者類型的不同可以重載函數。


  如果只是返回值不同,則不能重載。


  --------------------------------------------------------------------------------


  缺省參數的函數。缺省值只能從后往前寫。


  也就是說int f(int i , int j = 0);是可以的。


  但是int f(int i = 0 ; int j);是不對的。


  --------------------------------------------------------------------------------


  一個class中如果有const 常量,聲明的時候不能初始化,否則优乐棋牌app下载編譯器報錯


  但是如果是static const int a = 0就可以


  class中的const int a可以在構造函數中初始化,注意只能在初始化列表中,不能在函數體中賦值


  其他的地方定義const 則需要初始化


  如果是extern const int a ;就可以不做初始化


  --------------------------------------------------------------------------------


  內聯函數應該放在.h的文件中,因為它是一個聲明


  另外在class中定義的函數是內聯的


  --------------------------------------------------------------------------------


  1 const int a = 10;


  2 int y = a;


  是可以的


請關注公眾號獲取更多資料



】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇計算機二級輔導:VC字符串轉換 下一篇WindowsApi學習筆記-設置線程的優..