c 之知識點整理

2021-08-03 14:53:06 字數 2035 閱讀 8642

c++在c語言的基礎上增加了很多特性,最重要也最常被用到的幾個就是類物件、引用、模板以及正規化程式設計。下面總結一下c++基礎的一些知識點

1. const 修飾符 const修飾符在c++中經常被用到,主要作用是定義常量資料,採用就近原則:const char * pnnum1 = "123456"; char*  const pnum2 = 「789123」;這兩者的區別在於第乙個const修飾的pnum指標指向的值不能被修改,第二個修飾的是指標pnum2不能被修改。這話有點不好理解,具體表現:

在上面定義上 再加上 *pnum1 = "1111111"; 或者 pnum2 = 「123123」;都會報錯。變數加上乙個const修飾符就會變成乙個常量,例如const int nmax = 100;可以用nmax來定義陣列的下標int narray[nmax]; 

2.內聯函式,內聯函式關鍵字 inline ,具有巨集定義類似的功能,但是巨集定義執行會進行引數的簡單直接替換,而內聯函式可以在呼叫時用函式形參和實參的方式進行呼叫。

3.引用,引用其實也是乙個位址,常量的引用是常量去資料的位址,棧區的資料的資料是返回棧區的位址,在區域性變數中不要返回變數的引用,因為出了作用域之外資料是不安全的,雖然可能沒有被及時銷毀。

void fun(int& rnum , int* pnum)

4.c++在c語言的基礎上增加了很多特性,最重要也最常被用到的幾個就是類物件、引用、模板以及正規化程式設計。下面總結一下c++基礎的一些知識點

1. const 修飾符 const修飾符在c++中經常被用到,主要作用是定義常量資料,採用就近原則:const char * pnnum1 = "123456"; char*  const pnum2 = 「789123」;這兩者的區別在於第乙個const修飾的pnum指標指向的值不能被修改,第二個修飾的是指標pnum2不能被修改。這話有點不好理解,具體表現:

在上面定義上 再加上 *pnum1 = "1111111"; 或者 pnum2 = 「123123」;都會報錯。變數加上乙個const修飾符就會變成乙個常量,例如const int nmax = 100;可以用nmax來定義陣列的下標int narray[nmax]; 

2.內聯函式,內聯函式關鍵字 inline ,具有巨集定義類似的功能,但是巨集定義執行會進行引數的簡單直接替換,而內聯函式可以在呼叫時用函式形參和實參的方式進行呼叫。

3.引用,引用其實也是乙個位址,常量的引用是常量去資料的位址,棧區的資料的資料是返回棧區的位址,在區域性變數中不要返回變數的引用,因為出了作用域之外資料是不安全的,雖然可能沒有被及時銷毀。

void fun(int& rnum , int* pnum)

4.函式過載:在相同作用域下,相同函式名不同引數的函式體叫做函式過載。c++函式過載是利用名稱粉碎機制,c語言中沒有名稱粉碎機制。// extern"c" : 使用c方式的符號,

//  不使用c++的名稱粉碎機制.  extern"c" void fun()

5.c語言中提供隱式轉換和強制型別轉換,c++中提供了更詳細的型別轉換 reinterpret_cast、static_cast、const_cast 具體用法請參考:

int nptr = (int)"123456";nptr = reinterpret_cast("123456");  char ch = 100;ch = static_cast(100);  char* pstr1 = (char*)pcstr;pstr1 = const_cast(pcstr);

6.new delete c++ 提供了新的記憶體分配和釋放關鍵字,new和delete,new int[10],new 物件;delete int。需要注意的是new會呼叫建構函式,而delete會呼叫析構函式

7.c++建構函式是一大特性,建構函式分為預設構造/無參構造、轉換構造、拷貝構造;建構函式允許進行過載,預設的建構函式在生成物件的時候進行呼叫,物件定義初始化的傳參的時候呼叫轉換構造,給類進行初始化列表賦值;拷貝構造發生在物件引數是本類物件的引用發生。禁止隱式轉換用explicit關鍵字

8.c++中類的靜態成員變數只能在類體外定義,類的靜態成員變數和成員函式不屬於物件,只屬於類本身。而友元函式,友元類、友元成員函式。友元的出現使得類的封裝更加靈活,但是也破壞了原因原則

c 知識點整理

1.c 中類是否支援多繼承?請說明原因。答 不支援,需要用介面來實現多繼承 2.我們都知道乙個類可以有多個建構函式,並且c 會在我們建立類的時候預設的提供乙個無參的建構函式,當我實現了另外乙個有引數的建構函式的時候,我還能呼叫無引數的建構函式嗎?請說明原因。答 不能,因為一旦你實現了乙個建構函式,c...

C 知識點整理

函式的呼叫約定 字首自增和字尾自增的區別 字首自增就是i 字尾自增就是 i。乙個變數使用字首或字尾方式增1的結果是一樣的。但,如果涉及到增1後的賦值,字首增1會把增1後的值賦值給其它變數,而字尾增1會把增1前的值賦值給其它變數。char型別自增方式 取值範圍是 128 127,當超過127時會溢位,...

知識點整理

一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...