偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C++對(duì)象復(fù)制相關(guān)應(yīng)用方式淺析

開發(fā) 后端
C++對(duì)象復(fù)制在實(shí)際代碼編寫中占據(jù)著非常重要的地位。我們今天將會(huì)通過對(duì)這篇文章的解讀為大家詳細(xì)介紹一下相關(guān)內(nèi)容。

C++編程語言的應(yīng)用范圍非常廣泛,而且功能很強(qiáng)大,它能夠支持很多程序設(shè)計(jì)風(fēng)格。其中就包括對(duì)面向?qū)ο蟮闹С?。在這里我們將會(huì)為大家詳細(xì)介紹一下有關(guān)C++對(duì)象復(fù)制的應(yīng)用方式,以幫助大家學(xué)習(xí)。

C++對(duì)象復(fù)制代碼示例:

  1. class Table{  
  2. Name * p;  
  3. size_t sz;  
  4. publish:  
  5. Table(size_t s = 15){p = new Name[ssz=s];}  
  6. ~Table(){delete[]p ;}  
  7. ......  
  8. }  
  9. void h()  
  10. {  
  11. Table t1;  
  12. Table t2 = t1;  
  13. Table t3;  
  14. t3 = t2;  

在h()結(jié)束時(shí),默認(rèn)構(gòu)造函數(shù)調(diào)用了2次,而析構(gòu)函數(shù)被調(diào)用了3次,為何?#t#

Table t1; 調(diào)用1次默認(rèn)構(gòu)造函數(shù)

Table t2 = t1;默認(rèn)的對(duì)象的賦值操作,按成員賦值,其中關(guān)于指針p,僅僅是將t1.p賦值給t2.p,即t2.p = t1.p,并無內(nèi)存分配。對(duì)象t1和t2的p指針均指向同一塊內(nèi)存。

Table t3; 調(diào)用1次默認(rèn)構(gòu)造函數(shù)

t3 = t2; 原t3.p指針被t2.p覆蓋,此時(shí)t3.p同樣指向?qū)ο髏1和t2的p指針的同一塊內(nèi)存。注意:t3原分配給p的內(nèi)存由于沒有指針指向,無法利用,造成存儲(chǔ)浪費(fèi)。

h()結(jié)束,對(duì)象t1,t2,t3的析構(gòu)函數(shù)調(diào)用,此時(shí)對(duì)t1,t2,t3的指針p所指的同一塊存儲(chǔ)進(jìn)行了三次刪除,非常危險(xiǎn),導(dǎo)致的結(jié)果是無發(fā)預(yù)料的,很可能災(zāi)難性的。

 

因此明確定義類的復(fù)制構(gòu)造函數(shù)(拷貝構(gòu)造函數(shù))和賦值預(yù)算可避免這樣的錯(cuò)誤。

 

代碼

  1. Table::Table (const Table &t)  
  2. {  
  3. p = new Name[sz=t.sz];  
  4. for(int i=0;i<sz;i++) p[i]=t.p[i];  
  5. }  
  6. Table & Table::operator=(const Table &t)  
  7. {  
  8. if(this!=&t){  
  9. delete []p;  
  10. p = new Name[sz=t.sz];  
  11. for(int i=0;i<sz;i++) p[i]=t.p[i];  
  12. }  
  13. return *this;  

C++對(duì)象復(fù)制的基本概念就為大家介紹到這里。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-06 17:39:52

C++ strtok

2010-01-25 14:18:46

C++對(duì)象模型

2010-01-14 14:17:20

Visual C++

2010-02-05 16:46:58

C++ TinyXml

2010-02-02 17:39:31

C++構(gòu)造函數(shù)

2010-02-03 14:30:04

C++棧對(duì)象

2009-08-25 15:15:08

C#對(duì)象序列化應(yīng)用

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2010-01-22 13:59:34

Visual C++應(yīng)

2010-02-03 15:27:26

C++ static

2010-02-04 13:39:44

C++數(shù)組參數(shù)

2010-02-04 14:29:45

C++ typenam

2010-02-06 16:39:45

C++ assert(

2010-02-06 16:21:35

C++常規(guī)DLL

2010-02-03 10:11:17

C++動(dòng)態(tài)數(shù)組

2010-02-01 17:31:06

C++類成員

2010-02-05 13:44:06

C++ eof()函數(shù)

2010-01-20 10:19:55

C++數(shù)組

2010-01-27 17:16:52

C++構(gòu)造函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)