欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

文章轉自公眾號:Coder梁(ID:Coder_LT)

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

像是結構體,我們可以使用列表初始化的方法進行初始化:

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

Thing th = {"hello", 23};

但類不行,因為結構體當中的成員變量都是public的,而類往往是私有的。這意味著我們不能直接用程序訪問數(shù)據(jù)成員,需要設計成函數(shù)。

在C++當中,這種用來構造類的函數(shù),被稱為類構造函數(shù)。構造函數(shù)的原型和函數(shù)頭有一個比較明顯的特征——它雖然沒有返回值,但沒有被聲明稱void類型,實際上構造函數(shù)沒有聲明類型。

比如我們還是之前的類:

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)在我們要加入構造函數(shù),首先是在類中加上聲明:

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

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

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();
? ? }
}

注意,構造函數(shù)中的參數(shù)名不能和類成員名一致,否則會引起錯誤:

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

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

shares = shares;

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

最后,我們來看下構造函數(shù)的使用。C++當中支持兩種方式,

我們先來看第一種,顯式地調用:

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

另外一種方式是隱式地調用:

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

這種方式更加緊湊,我們每次使用new動態(tài)分配內存時,也會使用類構造函數(shù)。

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

構造函數(shù)的使用不同于一般的類方法,我們無法使用對象來調用構造函數(shù)。

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

相關文章

  • C++詳細講解IO流原理

    C++詳細講解IO流原理

    當程序與外界進行信息交換時,存在兩個對象,一個是程序中的對象,另一個是文件對象。流是信息流動的一種抽象,它負責在數(shù)據(jù)的生產者和數(shù)據(jù)的消費者之間建立聯(lián)系,并管理數(shù)據(jù)的流動
    2022-05-05
  • C語言程序中結構體的內存對齊詳解

    C語言程序中結構體的內存對齊詳解

    這篇文章主要為大家詳細介紹了C語言程序中結構體的內存對齊的相關資料,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下
    2022-11-11
  • 如何在程序中判斷VS的版本(實現(xiàn)方法詳解)

    如何在程序中判斷VS的版本(實現(xiàn)方法詳解)

    下面小編就為大家?guī)硪黄绾卧诔绦蛑信袛郪S的版本(實現(xiàn)方法詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • C++聯(lián)合體union用法實例詳解

    C++聯(lián)合體union用法實例詳解

    這篇文章主要介紹了C++聯(lián)合體union用法,較為詳細的分析了C++中聯(lián)合體的概念、實用技巧及相關注意事項,需要的朋友可以參考下
    2015-05-05
  • C++的get()函數(shù)與getline()函數(shù)使用詳解

    C++的get()函數(shù)與getline()函數(shù)使用詳解

    這篇文章主要介紹了C++的get()函數(shù)與getline()函數(shù)使用詳解,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C語言數(shù)據(jù)的存儲超詳細講解中篇練習

    C語言數(shù)據(jù)的存儲超詳細講解中篇練習

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內存位置。這意味著,當您創(chuàng)建一個變量時,就會在內存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內存和決定在保留內存中存儲什么
    2022-04-04
  • matlab模擬退火算法單約束車間流水線調度解決實現(xiàn)及示例

    matlab模擬退火算法單約束車間流水線調度解決實現(xiàn)及示例

    這篇文章主要為大家介紹了matlab模擬退火算法求解單約束車間流水線調度的實現(xiàn)及示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • Qt實現(xiàn)獲取文件大小與磁盤空間大小

    Qt實現(xiàn)獲取文件大小與磁盤空間大小

    這篇文章主要為大家詳細介紹了如何使用Qt實現(xiàn)獲取文件大小與磁盤空間大小,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • C語言棧之順序棧

    C語言棧之順序棧

    這篇文章主要為大家詳細介紹了C語言的順序棧,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Qt中TCP協(xié)議通信詳解

    Qt中TCP協(xié)議通信詳解

    這篇文章主要為大家詳細介紹了Qt中TCP協(xié)議通信,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論