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

EasyC++,構造函數

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

[[439549]]

大家好,我是梁唐。

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

構造函數

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

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

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

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

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

比如我們還是之前的類:

  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 

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

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

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

  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.     } 

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

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

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

  1. shares = shares; 

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

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

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

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

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

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

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

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

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

 

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

2021-12-10 10:45:36

C++函數Stock

2021-12-11 19:02:03

函數C++對象

2021-12-12 18:13:54

C++This指針

2021-12-29 20:31:40

C++多態指針

2021-11-10 10:48:36

C++函數指針

2021-11-26 00:03:20

C++編譯常量

2021-11-30 11:04:36

C++函數語言

2021-12-08 10:43:09

C++實現

2021-10-26 00:19:51

C++結構體存儲

2021-12-30 14:58:58

C++函數動態

2021-11-09 10:38:16

C++Const指針

2021-11-27 11:50:09

C++靜態持續

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++數組存儲

2021-12-14 10:12:58

C++抽象數據

2021-12-26 00:08:35

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

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久不卡网国产精品一区 | 91av在线电影 | 综合国产第二页 | 亚洲超碰在线观看 | 婷婷丁香激情 | .国产精品成人自产拍在线观看6 | av资源在线看 | 国产日韩欧美在线 | 日韩欧美大片 | 麻豆视频国产在线观看 | 日韩精品视频网 | 亚洲成av片人久久久 | 国产成人一区二区三区精 | 亚洲一区二区三区久久久 | 日本亚洲欧美 | 国产精品综合视频 | 日韩欧美国产一区二区三区 | 日日夜夜精品 | 一区二区三区国产 | 国产精品观看 | 91色视频在线 | av色在线 | 日韩二区 | 亚洲品质自拍视频 | 日本一区二区高清视频 | 亚洲国产一区视频 | 午夜影视在线观看 | 91视频精选 | 欧美另类日韩 | 亚洲欧美综合精品久久成人 | 91九色porny首页最多播放 | 自拍视频一区二区三区 | 亚洲免费视频一区 | 性色av网站| 五月婷婷激情 | 黄色三级毛片 | 精品久久精品 | 欧美激情一区 | 欧美一级大片免费看 | 日韩午夜电影在线观看 | 亚洲一区二区三区视频在线 |