天天看點

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元



1.拷貝構造

//拷貝構造的規則,有兩種方式實作初始化。

//1、一個是通過在後面:a(x),b(y)的方式實作初始化。

//2、第二種初始化的方式是直接在構造方法裡面實作初始化。

案例如下:

2.深度拷貝,使用深度拷貝的時候要将配置設定記憶體,這是其中的關鍵點。

上面的運作結果是:

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

運作結果如下:

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

3.關于delete和default相關的操作

a:delete可以禁用預設生成的函數,禁用構造可以無法執行個體化,禁用拷貝構造,可以實作禁止别人拷貝你。

b:default的作用是讓函數預設存在。

4.explicit.cpp

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

5.類的賦初值

第一種方式: 

在構造函數後面通過加上 

:變量名(變量值)

第二種方式:在構造函數,函數體裡面寫上  

變量名=變量值;

第三種方式:類名對象名=變量值

運作結果是:

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

指派案例2:

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

6.構造函數與析構函數

a:系統自動生成了構造函數與析構函數

b:被包含的,最先調用構造,最後調用析構

c:包含别人的,最後調用構造,最先調用析構

案例說明:

運作結果截圖:

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

分析,上面的math類調用fushu這個類,這個結果說明了a,b,c.

7.成員函數和内聯函數

a:内聯函數一般在頭檔案中。

編寫頭檔案:

頭檔案中的實作類

調用函數:

7.關于記憶體

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

8.關于預設參數

運作結果:

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

9.在類裡面定義一個靜态變量,實作計數并限制qt中彈出窗體,建立qmainwindow的qt項目。(如果想讓qt支援c++11的文法,需要在qt項目的pro檔案中加入:config

+= c++11,可以再最後面附加上)其中main.cpp的代碼是:

10.靜态函數和普通函數

運作結果是彈出電腦和記事本。

11.函數預設參數,對于給含有預設參數的函數指派的時候,參數的指派将從左往右指派給函數中的參數。

拷貝構造,深度拷貝,關于delete和default相關的操作,explicit,類賦初值,構造函數和析構函數,成員函數和内聯函數,關于記憶體存儲,預設參數,靜态函數和普通函數,const函數,友元

12.加了const之後函數和沒有加const變量的函數的差別:

建立qt項目,編寫代碼:

13.關于友元函數,案例如下(不用修改qt的頭檔案和頭檔案的實作類):

14.友元類,當指向了一個指針的時候一定要初始化。否則将出現錯誤,下面的函數任然是main.cpp中的内容。

友元類案例2

頭檔案qt項目:

繼續閱讀