一步一步學習C (類)之拷貝建構函式

2021-06-29 14:59:54 字數 1034 閱讀 6779

拷貝建構函式,又稱複製建構函式,是一種特殊的建構函式,它由編譯器

呼叫來完成一些基於同一類的其他物件的構建及初始化。

在c++中,下面三種物件需要呼叫拷貝建構函式(有時也稱「複製建構函式」)。

1) 乙個物件作為函式引數,以值傳遞的方式傳入

函式體

tstudent::tstudent(const tstudent &p)//拷貝複製函式

//全域性函式,傳入的是物件

void test(tstudent &p)//值傳遞,需要呼叫拷貝複製函式

呼叫test()時,會產生以下幾個重要步驟:

(1)p物件傳入形參時,會先會產生乙個臨時變數,就叫 c 吧。

(2)然後呼叫拷貝建構函式把test的值給c。 整個這兩個步驟有點像:tstudent 

c(p);

(3)等test()執行完後, 就析構掉 c 物件。

2) 乙個物件作為函式返回值,以值傳遞的方式從函式返回

tstudent test1()

當test1()函式執行到return時,會產生以下幾個重要步驟:

(1)先會產生乙個臨時變數,就叫p吧。

(2)然後呼叫拷貝建構函式把temp的值給p。整個這兩個步驟有點像:

cexample p(temp);

(3)在函式執行到最後先析構temp區域性變數。

(4)等test()執行完後再析構掉p物件。

3) 乙個物件用於給另外乙個物件進行初始化(常稱為賦值初始化)

tstudent p("李四",90,90);

tstudent b = p;

一步一步學習C (類)之成員函式的特性

在類體中說明的函式作為類的成員,稱為成員函式。一般的成員函式,它是根據某種類的功能的需要來定義的。除此之外,又討論了一些特殊的成員函式 建構函式 析構函式 拷貝初始化建構函式等。本節討論除成員函式定義與說明之外的其它一些特殊屬性。類的成員函式可分為內聯函式與外聯函式。內聯函式是指定義在類體內的成員函...

一步一步學習IdentityServer3 8

identityserver3結合hangfire及cookies中介軟體實現授權 idr3資料庫token過期管理 globalconfiguration.configuration.usesqlserverstorage hangfire globalconfiguration.configur...

一步一步學習IdentityServer3 4

其實上述例子 很多都很找到 但是在實際生態環境中給例子有很多不一樣的地方 比如自定已登入介面怎麼做?怎麼訪問自己的使用者資料庫實現登入?怎麼在介面中使用,在介面中又怎麼實現與idr3結合授權?等等問題 解下來我會在實際專案中整體一步一步介紹 1 這是我自定義登入的介面 2 在授權同意頁面 3 下圖是...