91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++構造函數怎么使用

發布時間:2022-01-04 17:35:12 來源:億速云 閱讀:131 作者:iii 欄目:開發技術

這篇文章主要講解了“C++構造函數怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++構造函數怎么使用”吧!

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

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

Thing th = {"hello", 23};

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

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

比如我們還是之前的類:

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

現在我們要加入構造函數,首先是在類中加上聲明:

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

注意看,我們實現定義的時候,函數是沒有返回類型的:

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

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

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

如果一致的話,就會出現這樣的代碼:

shares = shares;

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

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

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

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

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

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

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

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

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

感謝各位的閱讀,以上就是“C++構造函數怎么使用”的內容了,經過本文的學習后,相信大家對C++構造函數怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

伊川县| 西安市| 抚松县| 澎湖县| 泌阳县| 松溪县| 武安市| 观塘区| 遂川县| 阜平县| 丹棱县| 河源市| 中超| 泰安市| 扎鲁特旗| 毕节市| 正镶白旗| 和平县| 琼海市| 洮南市| 高陵县| 东宁县| 抚顺县| 阿尔山市| 建湖县| 肥城市| 桦南县| 乾安县| 加查县| 鲁山县| 托克托县| 吉隆县| 鄢陵县| 嵊泗县| 和平区| 当阳市| 伊宁市| 临朐县| 锡林郭勒盟| 浠水县| 盐源县|