C++學習筆記---基本內置類型

1、引用:是一種複合類型(用其它類型定義的類型),引用只是對象的另一個名字;引用是一種複合類型,通過在變量名前添加“&”符號來定義。
int ival = 1025;
int &refVal = ival;    // ok refVal refers to ival

const限定符把一個對象轉換成一個常量;
如果函數具有普通的非const引用形參,,則顯然不能通過const對象進行調用。畢竟,此時函數可以修改傳遞進來的對象,這樣就違背了實參的const特性


typedef限定符是用來定義類型的同義詞;

extern 可置於變量或者函數前,以表示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。就是聲明一個變量;當extern不與"C"在一起修飾變量或函數時,如在頭文件中: extern int g_Int; 它的作用就是聲明函數或全局變量的作用範圍的關鍵字,其聲明的函數和變量可以在本模塊活其他模塊中使用,記住它是一個聲明不是定義!


2、關鍵字class和struct的區別:
如果使用class關鍵字來定義類,那麼定義在第一個訪問標號前的任何成員都隱式指定爲private;如果使用struct關鍵字,那麼這些成員都是public。

3、頭文件中包含的內容:
類定義、extern變量的聲明和函數的聲明,注意不應該含有定義這一規則,但有三個例外。頭文件可以定義類、值在編譯時就已知道的const對象和inline函數。

可以用下面這些設施來預防多次包含同一頭文件:
#define,宏定義,指示接受一個名字並定義該名字爲預處理器變量,只做字符串替換,替換後再進行編譯。
#define paster(n)  printf("token"#n"=%d\n",token##n),使用用paster(n),將會被替換成後面的字符串;

#ifndef指示檢測指定的預處理器變量是否未定義。如果預處理器變量未定義,那麼在其後的所有指示都被處理,直到出現#endif。

所謂的靜態類型語言:
變量和函數在使用前必須先聲明;

4、枚舉類型:
enum weekday{ sun,mou,tue,wed,thu,fri,sat}等價於enum weekday{ sun=0,mou=1,tue=2,wed=3,thu=4,fri=5,sat=6}
枚舉值是常量,不是變量。不能在程序中用賦值語句再對它賦值

5、指針:
(1)指針和const限定符:
C++語言強制要求指向const對象的指針也必須具有const特性;
如:const double *cptr;
const 限定符限定了cptr指針所指向的對象的類型,而並非cptr本身,也就是說cptr本身並不是const。
不能使用void*指針保存const對象的地址,必須使用const void*類型的指針保存const對象的地址;
允許把非const對象的地址賦值給指向const對象的指針;

6、
(1)對於C風格的字符串比如char*,char str[],轉換爲 string,char * 和char str[]類型可以直接轉換爲string 類型;
(2)對於string 轉換爲char* ,string提供一個方法可以直接返回字符串的首指針地址即:string.c_str();

7、C++中,全局域只能聲明,初始化變量,不能對變量進行賦值,運算,調用函數等操作 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章