頻道欄目
首頁 > 程序開發 > 軟件開發 > C++ > 正文
C++編程之引用和拷貝構造函數、按值傳遞和返回、位拷貝與初始化等實例
2018-07-27 13:51:58         來源:eyetired的博客  
收藏   我要投稿

對于傳遞和返回大的簡單結構有了可使用的方法

一個類在任何時候都知道她存在多少個對象

//: C11:HowMany.cpp
// From Thinking in C++, 2nd Edition
// Available at https://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// A class that counts its objects
#include 
#include 
using namespace std;
ofstream out("HowMany.out");

class HowMany {
 static int objectCount;
public:
 HowMany() { objectCount++; }
 static void print(const string& msg = "") {
  if(msg.size() != 0) out << msg << ": ";
  out << "objectCount = "
    << objectCount << endl;
 }
 ~HowMany() {
  objectCount--;
  print("~HowMany()");
 }
};

int HowMany::objectCount = 0;

// Pass and return BY VALUE:
HowMany f(HowMany x) {
 x.print("x argument inside f()");
 return x;
}

int main() {
 HowMany h;
 HowMany::print("after construction of h");
 HowMany h2 = f(h);
 HowMany::print("after call to f()");
} ///:~

HowMany類包括一個靜態變量int objectCount和一個用于報告這個變量的

靜態成員函數print(),這個函數有一個可選擇的消息參數

輸出不是我們期望的那樣

after construction of h: objectCount = 1

x argument inside f(): objectCount = 1

~HowMany(): objectCount = 0

after call to f(): objectCount = 0

~HowMany(): objectCount = -1

~HowMany(): objectCount = -2

在h生成以后,對象數是1,這是對的

原來的對象h存在函數框架之外,同時在函數體內又增加了一個對象,這個對象

是通過傳值方式傳入的對象的拷貝

在對f()的調用的最后,當局部對象出了其范圍時,析構函數就被調用,析構

函數使objectCount減小

點擊復制鏈接 與好友分享!回本站首頁
上一篇:關于C++多態的基礎知識講解
下一篇:C++的單例模式的幾種實現方式解析
相關文章
圖文推薦
文章
推薦
點擊排行

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

重庆快乐十分开奖记录