最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++構(gòu)造函數(shù)詳解

 更新時(shí)間:2022年01月02日 11:02:52   作者:唐梁  
這篇文章主要介紹了C++構(gòu)造函數(shù)詳解,上一篇文章我們介紹了定義了類(lèi),在使用之前,往往還需要對(duì)類(lèi)進(jìn)行初始化。這篇介紹的就是對(duì)類(lèi)進(jìn)行初始化的方法,需要的朋友可以參考一下

文章轉(zhuǎn)自公眾號(hào):Coder梁(ID:Coder_LT)

上一篇文章我們介紹了定義了類(lèi),在使用之前,往往還需要對(duì)類(lèi)進(jìn)行初始化。這篇介紹的就是對(duì)類(lèi)進(jìn)行初始化的方法。

像是結(jié)構(gòu)體,我們可以使用列表初始化的方法進(jìn)行初始化:

struct Thing {
? ? char *pn;
? ? int m;
};

Thing th = {"hello", 23};

但類(lèi)不行,因?yàn)榻Y(jié)構(gòu)體當(dāng)中的成員變量都是public的,而類(lèi)往往是私有的。這意味著我們不能直接用程序訪問(wèn)數(shù)據(jù)成員,需要設(shè)計(jì)成函數(shù)。

在C++當(dāng)中,這種用來(lái)構(gòu)造類(lèi)的函數(shù),被稱(chēng)為類(lèi)構(gòu)造函數(shù)。構(gòu)造函數(shù)的原型和函數(shù)頭有一個(gè)比較明顯的特征——它雖然沒(méi)有返回值,但沒(méi)有被聲明稱(chēng)void類(lèi)型,實(shí)際上構(gòu)造函數(shù)沒(méi)有聲明類(lèi)型。

比如我們還是之前的類(lèi):

class Stock {
? ? private:
? ? ?std::string company;
? ? ?long shares;
? ? ?double share_val;
? ? ?double total_val;
? ? ?void set_tot() {total_val = shares * share_val;}
? ? public:
? ? ?void accquire(const std::string &co, long n, double pr);
? ? ?void buy(long num, double price);
? ? ?void sell(long num, double price);
? ? ?void update(double price);
? ? ?void show();
};
#endif

現(xiàn)在我們要加入構(gòu)造函數(shù),首先是在類(lèi)中加上聲明:

class Stock {
? ? ...
? ? Stock(const string &co, long n=0, double pr=0.0);
}

注意看,我們實(shí)現(xiàn)定義的時(shí)候,函數(shù)是沒(méi)有返回類(lèi)型的:

Stock::Stock(const string &co, long n, double pr) {
? ? company = co;
? ? if (n < 0) {
? ? ? ? std::cerr << "Number of shares can't be negative;"
? ? ? ? ? ? ? ?<< company << " shares set to 0.\n";
? ? ? ? shares = 0;
? ? }else {
? ? ? ? shares = n;
? ? ? ? share_val = pr;
? ? ? ? set_tot();
? ? }
}

注意,構(gòu)造函數(shù)中的參數(shù)名不能和類(lèi)成員名一致,否則會(huì)引起錯(cuò)誤:

Stock::Stock(const string &company, long shares, double share_val) {}

如果一致的話(huà),就會(huì)出現(xiàn)這樣的代碼:

shares = shares;

為了避免這種混亂,一般會(huì)在代碼風(fēng)格層面加以區(qū)分。比如在谷歌代碼規(guī)范當(dāng)中,類(lèi)中的private成員變量中需要使用后綴_。

最后,我們來(lái)看下構(gòu)造函數(shù)的使用。C++當(dāng)中支持兩種方式,

我們先來(lái)看第一種,顯式地調(diào)用:

Stock food = Stock("word", 250, 2.5);

另外一種方式是隱式地調(diào)用:

Stock garment("furry", 50, 2.5);

這種方式更加緊湊,我們每次使用new動(dòng)態(tài)分配內(nèi)存時(shí),也會(huì)使用類(lèi)構(gòu)造函數(shù)。

Stock *pstock = new Stock("ele", 18, 19.0);

構(gòu)造函數(shù)的使用不同于一般的類(lèi)方法,我們無(wú)法使用對(duì)象來(lái)調(diào)用構(gòu)造函數(shù)。

到此這篇關(guān)于C++構(gòu)造函數(shù)詳解的文章就介紹到這了,更多相關(guān)C++構(gòu)造函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語(yǔ)言鏈表操作示例分享

    c語(yǔ)言鏈表操作示例分享

    這篇文章主要介紹了c語(yǔ)言鏈表操作示例,代碼中有注釋,需要的朋友可以參考下
    2014-03-03
  • C++深入探究友元使用

    C++深入探究友元使用

    采用類(lèi)的機(jī)制后實(shí)現(xiàn)了數(shù)據(jù)的隱藏與封裝,類(lèi)的數(shù)據(jù)成員一般定義為私有成員,成員函數(shù)一般定義為公有的,依此提供類(lèi)與外界間的通信接口。但是,有時(shí)需要定義一些函數(shù),這些函數(shù)不是類(lèi)的一部分,但又需要頻繁地訪問(wèn)類(lèi)的數(shù)據(jù)成員,這時(shí)可以將這些函數(shù)定義為該類(lèi)的友元函數(shù)
    2022-07-07
  • 15種?C++?常見(jiàn)報(bào)錯(cuò)原因分析

    15種?C++?常見(jiàn)報(bào)錯(cuò)原因分析

    這篇文章主要介紹了15種?C++?常見(jiàn)報(bào)錯(cuò),本文通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 虛函數(shù)與純虛函數(shù)(C++與Java虛函數(shù)的區(qū)別)的深入分析

    虛函數(shù)與純虛函數(shù)(C++與Java虛函數(shù)的區(qū)別)的深入分析

    本篇文章是對(duì)虛函數(shù)與純虛函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Qt GUI圖形圖像開(kāi)發(fā)之QT表格控件QTableView,QTableWidget復(fù)雜表頭(多行表頭) 及凍結(jié)、固定特定的行的詳細(xì)方法與實(shí)例

    Qt GUI圖形圖像開(kāi)發(fā)之QT表格控件QTableView,QTableWidget復(fù)雜表頭(多行表頭) 及凍結(jié)、固定特

    這篇文章主要介紹了Qt GUI圖形圖像開(kāi)發(fā)之QT表格控件QTableView,QTableWidget復(fù)雜表頭(多行表頭) 及凍結(jié)、固定特定的行的詳細(xì)方法與實(shí)例,需要的朋友可以參考下
    2020-03-03
  • c語(yǔ)言socket多線(xiàn)程編程限制客戶(hù)端連接數(shù)

    c語(yǔ)言socket多線(xiàn)程編程限制客戶(hù)端連接數(shù)

    這篇文章主要介紹了c語(yǔ)言socket多線(xiàn)程編程,可以限制客戶(hù)端連接數(shù),大家參考使用吧
    2013-12-12
  • Clion配置C語(yǔ)言環(huán)境的步驟詳解

    Clion配置C語(yǔ)言環(huán)境的步驟詳解

    這篇文章主要介紹了Clion配置C語(yǔ)言環(huán)境的步驟詳解,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 聊一聊C++虛函數(shù)表的問(wèn)題

    聊一聊C++虛函數(shù)表的問(wèn)題

    C++是面向?qū)ο蟮恼Z(yǔ)言(與C語(yǔ)言主要區(qū)別),所以C++也擁有多態(tài)的特性。下面通過(guò)代碼看下C++虛函數(shù)表的問(wèn)題,感興趣的朋友一起看看吧
    2021-10-10
  • C++ 異常處理 catch(...)介紹

    C++ 異常處理 catch(...)介紹

    catch(…)能夠捕獲多種數(shù)據(jù)類(lèi)型的異常對(duì)象,所以它提供給程序員一種對(duì)異常 對(duì)象更好的控制手段,使開(kāi)發(fā)的軟件系統(tǒng)有很好的可靠性
    2013-09-09
  • VSCODE+cmake配置C++開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)步驟

    VSCODE+cmake配置C++開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)步驟

    這篇文章主要介紹了VSCODE+cmake配置C++開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

应城市| 内黄县| 兴宁市| 福泉市| 唐山市| 潜山县| 灵山县| 祁阳县| 苏尼特左旗| 桃园市| 老河口市| 巴彦淖尔市| 广宗县| 理塘县| 古田县| 平远县| 台中市| 梓潼县| 永州市| 五华县| 封丘县| 西昌市| 赤水市| 东丽区| 治多县| 建平县| 龙岩市| 扶沟县| 临沭县| 五指山市| 天全县| 深泽县| 蒲江县| 衡阳县| 油尖旺区| 碌曲县| 聊城市| 金山区| 修武县| 茌平县| 湖南省|