bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

c++控制對象創建方式和創建數量的方法-創新互聯

小編給大家分享一下c++控制對象創建方式和創建數量的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創新互聯公司自成立以來,一直致力于為企業提供從網站策劃、網站設計、成都做網站、成都網站建設、電子商務、網站推廣、網站優化到為企業提供個性化軟件開發等基于互聯網的全面整合營銷服務。公司擁有豐富的網站建設和互聯網應用系統開發管理經驗、成熟的應用系統解決方案、優秀的網站開發工程師團隊及專業的網站設計師團隊。

我們知道,C++將內存劃分為三個邏輯區域:堆、棧和靜態存儲區。既然如此,我稱位于它們之中的對象分別為堆對象,棧對象以及靜態對象。通常情況下,對象創建在堆上還是在棧上,創建多少個,這都是沒有限制的。但是有時會遇到一些特殊需求。

1.禁止創建棧對象

禁止創建棧對象,意味著只能在堆上創建對象。創建棧對象時會移動棧頂指針以“挪出”適當大小的空間,然后在這個空間上直接調用類的構造函數以形成一個棧對象。而當棧對象生命周期結束,如棧對象所在函數返回時,會調用其析構函數釋放這個對象,然后再調整棧頂指針收回那塊棧內存。在這個過程中是不需要operator new/delete操作的,所以將operator new/delete設置為private不能達到目的。

可以將構造函數或析構函數設為私有的,這樣系統就不能調用構造/析構函數了,當然就不能在棧中生成對象了。這樣的確可以,但有一點需要注意,那就是如果我們將構造函數設置為私有,那么我們也就不能用new來直接產生堆對象了,因為new在為對象分配空間后也會調用它的構造函數。所以,如果將構造函數和析構函數都聲明為private會帶來較大的副作用,最好的方法是將析構函數聲明為private,而構造函數保持為public。

再進一步,將析構函數設為private除了會限制棧對象生成外,還有其它影響嗎?是的,這還會限制繼承。如果一個類不打算作為基類,通常采用的方案就是將其析構函數聲明為private。為了限制棧對象,卻不限制繼承,我們可以將析構函數聲明為protected,這樣就兩全其美了。如下代碼所示:

class NoStackObject{ 
protected: 
 ~NoStackObject(){} 
public: 
 void destroy(){ 
  delete this ;//調用保護析構函數 
 } 
};

新聞名稱:c++控制對象創建方式和創建數量的方法-創新互聯
地址分享:http://vcdvsql.cn/article12/iidgc.html

成都網站建設公司_創新互聯,為您提供網站收錄網站導航網站設計公司微信公眾號靜態網站品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

小程序開發