C++ 初始化還是構(gòu)造?

2023-03-20 16:22 更新

之前我們使用大括號(hào)聲明并初始化了一些Time結(jié)構(gòu):

Time currentTime = { 9, 14, 30.0 };
Time breadTime = { 3, 35, 0.0 };

現(xiàn)在,通過(guò)使用構(gòu)造函數(shù),我們能用另一種方式來(lái)聲明和初始化:

Time time (seconds);

這兩個(gè)函數(shù)展現(xiàn)了不同的編程風(fēng)格,以及在C++歷史上不同的觀點(diǎn)??赡苁浅鲇谶@個(gè)原因,C++編譯器要求你使用其中一個(gè),而不能在一個(gè)程序中同時(shí)使用。

如果你為結(jié)構(gòu)體定義了一個(gè)構(gòu)造函數(shù),那么你需要使用構(gòu)造函數(shù)來(lái)初始化該類型的所有新的結(jié)構(gòu)。不再允許使用花括號(hào)的那種語(yǔ)法。

幸運(yùn)的是,使用重載函數(shù)的方式來(lái)重載構(gòu)造函數(shù)是合法的。換句話說(shuō),可以存在多個(gè)構(gòu)造函數(shù)具有相同的"名字",只要它們的參數(shù)不同就行。當(dāng)我們初始化一個(gè)新的對(duì)象時(shí),編譯器會(huì)嘗試找到具有合適參數(shù)的構(gòu)造函數(shù)。

例如,一個(gè)構(gòu)造函數(shù)為每個(gè)實(shí)例變量

Time::Time (int h, int m, double s)
{
    hour = h;   minute = m;   second = s;
}

我們使用以前的語(yǔ)法來(lái)調(diào)用這個(gè)構(gòu)造函數(shù),特殊之處在于形參需要兩個(gè)整型數(shù)和一個(gè)double類型的數(shù):

Time currentTime (9, 14, 30.0);
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)