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

2023-03-20 16:22 更新

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

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

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

Time time (seconds);

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號