成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

EasyC++,構造函數(shù)

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

[[439549]]

大家好,我是梁唐。

想要追求更好閱讀體驗的同學,可以點擊「閱讀原文」訪問github倉庫。

構造函數(shù)

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

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

  1. struct Thing { 
  2.     char *pn; 
  3.     int m; 
  4. }; 
  5.  
  6. Thing th = {"hello", 23}; 

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

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

比如我們還是之前的類:

  1. class Stock { 
  2.     private: 
  3.      std::string company; 
  4.      long shares; 
  5.      double share_val; 
  6.      double total_val; 
  7.      void set_tot() {total_val = shares * share_val;} 
  8.     public
  9.      void accquire(const std::string &co, long n, double pr); 
  10.      void buy(long num, double price); 
  11.      void sell(long num, double price); 
  12.      void update(double price); 
  13.      void show(); 
  14. }; 
  15. #endif 

現(xiàn)在我們要加入構造函數(shù),首先是在類中加上聲明。

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

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

  1. Stock::Stock(const string &co, long n, double pr) { 
  2.     company = co; 
  3.     if (n < 0) { 
  4.         std::cerr << "Number of shares can't be negative;" 
  5.                << company << " shares set to 0.\n"
  6.         shares = 0; 
  7.     }else { 
  8.         shares = n; 
  9.         share_val = pr; 
  10.         set_tot(); 
  11.     } 

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

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

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

  1. shares = shares; 

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

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

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

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

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

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

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

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

本文轉載自微信公眾號「Coder梁」,可以通過以下二維碼關注。轉載本文請聯(lián)系Coder梁公眾號。

 

責任編輯:武曉燕 來源: Coder梁
相關推薦

2021-12-10 10:45:36

C++函數(shù)Stock

2021-12-11 19:02:03

函數(shù)C++對象

2021-12-29 20:31:40

C++多態(tài)指針

2021-12-12 18:13:54

C++This指針

2021-11-10 10:48:36

C++函數(shù)指針

2021-11-26 00:03:20

C++編譯常量

2021-11-30 11:04:36

C++函數(shù)語言

2021-11-09 10:38:16

C++Const指針

2021-11-27 11:50:09

C++靜態(tài)持續(xù)

2021-12-08 10:43:09

C++實現(xiàn)

2021-10-26 00:19:51

C++結構體存儲

2021-12-30 14:58:58

C++函數(shù)動態(tài)

2021-10-26 15:36:17

C++枚舉值類型

2021-10-27 16:27:20

C++指針操控

2021-12-05 18:20:42

C++空間特性

2021-12-15 10:25:57

C++運算符重載

2022-01-04 16:35:42

C++Protected關鍵字

2021-10-21 18:52:00

C++數(shù)組存儲

2021-12-14 10:12:58

C++抽象數(shù)據(jù)

2021-12-26 00:08:35

C++初始化列表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区在线观看 | 久久一区二区视频 | 涩涩视频网 | 精品一区av| 一级片av | 91久久国产综合久久91精品网站 | 精品久久久久久亚洲综合网站 | 亚洲国产精品一区二区三区 | 黑人一级片视频 | 一区二区三区日韩精品 | 中文字幕在线不卡 | 北条麻妃99精品青青久久主播 | 日本色综合 | 日韩一二三区视频 | 国产精品一二区 | 三级av网址| 午夜精品一区二区三区在线视频 | 美女张开腿露出尿口 | 亚洲精品免费观看 | 久草视频网站 | 亚洲精品久久久一区二区三区 | 亚洲码欧美码一区二区三区 | 国产日韩一区二区三免费高清 | 91精品国产色综合久久不卡蜜臀 | 国产成人99久久亚洲综合精品 | 欧美无乱码久久久免费午夜一区 | 国产精品一区二区三级 | 成人精品在线视频 | 国产极品91| 日韩欧美精品在线播放 | 久艹av| 天堂中文字幕av | 一区二区三区四区不卡 | 国产精品1区2区 | 国产区第一页 | 伊人伊人伊人 | 欧美黄在线观看 | 成人免费视频在线观看 | 亚洲精品一区二区在线观看 | 亚洲欧洲在线观看视频 | 欧美综合视频在线 |