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

C++構造函數相關使用方式解讀

開發 后端
C++構造函數允許默認參數,可以使C++構造函數調用構造函數來重用代碼的需求大大減少。在操作中我們需要注意一些細節問題,在這里都會一一介紹。

我們今天將會為大家詳細介紹一下有關C++構造函數的基本應用方式。希望初學者們可以通過本文介紹的內容充分掌握這方面的知識,以便在將來實際應用中獲得幫助,并且在一定程度上加深對這一語言的認知程度。#t#

我們知道,當定義一個對象時,會按順序做2件事情:

1)分配好內存(非靜態數據成員是未初始化的)

2)調用C++構造函數(構造函數的本意就是初始化非靜態數據成員)

顯然上面代碼中,CLS obj;這里已經為obj分配了內存,然后調用默認構造函數,但是默認構造函數還未執行完,卻調用了另一個構造函數,這樣相當于產生了一個匿名的臨時CLS對象,它調用CLS(int)構造函數,將這個匿名臨時對象自己的數據成員m_i初始化為0;但是obj的數據成員并沒有得到初始化。于是obj的m_i是未初始化的,因此其值也是不確定的

從這里,我們歸納如下:

1)在c++里,由于構造函數允許有默認參數,使得這種C++構造函數調用構造函數來重用代碼的需求大為減少

2)如果僅僅為了一個構造函數重用另一個構造函數的代碼,那么完全可以把構造函數中的公共部分抽取出來定義一個成員函數(推薦為private),然后在每個需要這個代碼的構造函數中調用該函數即可

3)偶爾我們還是希望在類的構造函數里調用另一個構造函數,可以按下面方式做:

在C++構造函數里調用另一個構造函數的關鍵是讓第二個構造函數在第一次分配好的內存上執行,而不是分配新的內存,這個可以用標準庫的placement new做到:

先看看標準庫中placement new的定義

  1. inline void *__cdecl operator new(size_t, void *_P)  
  2. {  
  3. return (_P);   
  4. }  

可見沒有分配新的內存。

正確的方式:

  1. struct CLS  
  2. {  
  3. int m_i;  
  4. CLS( int i ) : m_i(i){}  
  5. CLS()  
  6. {  
  7. new (this)CLS(0);  
  8. }  
  9. }; 

另: 若C++構造函數調用自身,則會出現無限遞歸調用,是不允許的

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-01 11:01:30

C++靜態構造函數

2010-01-25 14:00:27

C++類

2010-01-27 10:13:22

C++類對象

2010-02-03 15:46:15

C++函數傳遞

2010-02-05 16:46:58

C++ TinyXml

2010-01-27 17:16:52

C++構造函數

2023-11-28 11:51:01

C++函數

2010-01-28 10:49:22

C++構造函數

2010-02-01 11:22:09

C++虛函數

2025-02-06 13:23:09

C++函數參數

2010-02-04 16:39:26

C++析構函數

2010-01-27 16:10:32

C++靜態構造函數

2010-01-22 11:13:16

C++靜態

2010-01-21 11:23:58

C++函數調用

2010-01-25 14:43:00

C++構造函數

2010-01-25 17:05:37

C++語言

2010-02-04 16:07:39

C++回調函數

2009-08-13 17:30:30

C#構造函數

2010-02-03 17:06:36

C++對象復制

2010-01-20 14:25:56

函數調用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区视频在线观看 | 丝袜美腿一区二区三区 | 欧美国产免费 | 亚洲福利| 精品国产区 | 亚洲毛片一区二区 | 久久国产综合 | 成人一区av偷拍 | 日韩福利 | 国产精品自产av一区二区三区 | 亚洲国产欧美日韩 | 一区二区三区视频在线观看 | 久久欧美高清二区三区 | 久久精品国产久精国产 | 国内精品伊人久久久久网站 | 羞羞视频免费在线观看 | 人人干人人超 | 99精品久久 | 日韩中文字幕一区 | 久久综合久色欧美综合狠狠 | 国产高清在线精品 | 欧美中文字幕 | 国产区精品 | 操操日 | 欧美一区二区三区视频 | 在线中文字幕亚洲 | 久久精品97 | 狠狠操av | 国产精品99久久久久久宅男 | 日本中文字幕日韩精品免费 | 免费视频一区二区三区在线观看 | 精品国产一区二区国模嫣然 | 亚洲国产成人在线视频 | 国产伦一区二区三区四区 | 精品一区二区三区在线视频 | 免费a大片 | 久久久久国产精品 | av天天澡天天爽天天av | 台湾佬久久| 亚洲欧美日韩精品久久亚洲区 | 综合九九|