C/C++編程筆記:詳細(xì)講解丨C++中的構(gòu)造方法
什么是構(gòu)造函數(shù)?
構(gòu)造函數(shù)是類的成員函數(shù),用于初始化類的對象。在C ++中,創(chuàng)建對象(類的實(shí)例)時(shí)會自動(dòng)調(diào)用Constructor。它是該類的特殊成員函數(shù)。

構(gòu)造函數(shù)與普通成員函數(shù)有何不同?
構(gòu)造函數(shù)與普通函數(shù)在以下方面有所不同:?
構(gòu)造函數(shù)與類本身具有相同的名稱
構(gòu)造函數(shù)沒有返回類型
創(chuàng)建對象時(shí)會自動(dòng)調(diào)用構(gòu)造函數(shù)。
如果不指定構(gòu)造函數(shù),則C ++編譯器會為我們生成一個(gè)默認(rèn)構(gòu)造函數(shù)(不帶參數(shù),并且具有空主體)。

讓我們通過一個(gè)真實(shí)的例子來了解C ++中構(gòu)造函數(shù)的類型:
假設(shè)您去商店買了一個(gè)記號筆。當(dāng)您想購買標(biāo)記筆時(shí),有哪些選擇?第一個(gè)你去商店說要給我一個(gè)記號筆。因此,只說給我一個(gè)標(biāo)記就意味著您沒有設(shè)置哪個(gè)品牌名稱和哪種顏色,也沒有提及任何事情,只是說您想要一個(gè)標(biāo)記。因此,當(dāng)我們說我只想要一個(gè)標(biāo)記筆時(shí),無論市場上還是他的商店中經(jīng)常出售的標(biāo)記筆,他都將簡單地交出。這就是默認(rèn)的構(gòu)造函數(shù)!第二種方法是您去商店說我要一個(gè)標(biāo)記為紅色和XYZ品牌的標(biāo)記。所以您提到這件事,他會給您這個(gè)標(biāo)記。因此,在這種情況下,您已經(jīng)給出了參數(shù)。這就是參數(shù)化的構(gòu)造函數(shù)!然后是第三個(gè),您去商店說我要這樣的記號筆(您手上的記號筆)。因此,店主將看到該標(biāo)記。好的,他會為您提供一個(gè)新標(biāo)記。因此,復(fù)制該標(biāo)記。這就是復(fù)制構(gòu)造函數(shù)!
構(gòu)造函數(shù)的類型
1.默認(rèn)構(gòu)造函數(shù):默認(rèn)構(gòu)造函數(shù)是不帶任何參數(shù)的構(gòu)造函數(shù)。它沒有參數(shù)。
輸出:?
a: 10
b: 20
注意:即使我們沒有顯式定義任何構(gòu)造函數(shù),編譯器也會自動(dòng)隱式提供默認(rèn)的構(gòu)造函數(shù)。
2.參數(shù)化的構(gòu)造函數(shù):可以將參數(shù)傳遞給構(gòu)造函數(shù)。通常,這些參數(shù)有助于在創(chuàng)建對象時(shí)初始化對象。要?jiǎng)?chuàng)建參數(shù)化的構(gòu)造函數(shù),只需像向其他函數(shù)一樣添加參數(shù)即可。定義構(gòu)造函數(shù)的主體時(shí),請使用參數(shù)初始化對象。?
輸出:?
p1.x = 10, p1.y = 15
當(dāng)在參數(shù)化構(gòu)造函數(shù)中聲明對象時(shí),必須將初始值作為參數(shù)傳遞給構(gòu)造函數(shù)。對象聲明的常規(guī)方法可能不起作用。構(gòu)造函數(shù)可以顯式或隱式調(diào)用。
Example e = Example(0, 50); //顯式調(diào)用
Example e(0, 50);? ? ? ? //隱式調(diào)用
參數(shù)化構(gòu)造函數(shù)的用途:?
創(chuàng)建對象時(shí),使用它來初始化具有不同值的不同對象的各種數(shù)據(jù)元素。
它用于重載構(gòu)造函數(shù)。
一個(gè)類中可以有多個(gè)構(gòu)造函數(shù)嗎?
? ? ? ?是的,這稱為構(gòu)造函數(shù)重載。
3.復(fù)制構(gòu)造函數(shù):復(fù)制構(gòu)造函數(shù)是一個(gè)成員函數(shù),它使用同一類的另一個(gè)對象初始化一個(gè)對象。有關(guān)復(fù)制構(gòu)造器的詳細(xì)文章。
每當(dāng)我們?yōu)橐粋€(gè)類定義一個(gè)或多個(gè)非默認(rèn)構(gòu)造函數(shù)(帶有參數(shù))時(shí),也應(yīng)顯式定義一個(gè)默認(rèn)構(gòu)造函數(shù)(不帶參數(shù)),因?yàn)樵谶@種情況下編譯器將不提供默認(rèn)構(gòu)造函數(shù)。但是,沒有必要,但是始終定義默認(rèn)構(gòu)造函數(shù)被認(rèn)為是最佳實(shí)踐。?
輸出:Error: point (double px, double py): expects 2 arguments, 0 provided
以上就是今天的全部內(nèi)容了。每日分享小知識,希望對你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號:C語言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
