C++对象的动态建立
C++對象的動態建立和釋放
在C++中,如果定義的對象是靜態的,在程序運行過程中,對象所占的空間是不能隨時釋放的。
為提高內存空間的利用率,希望在需要用到對象時才建立對象,在不需要用該對象時就撤銷它,釋放它所占的內存空以供別的數據使用。
如果前面章節跟隨小林的學習路線學習,應該知道可以用new運算符動態地分配內存,用delete運算符釋放這些內存空間,C++對象同樣適用,可以用new運算符動態建立對象,用delete運算符撤銷對象。?
用new運算符動態地分配內存后,將返回一個指向新對象的指針的值,即所分配的內存空間的起始地址,程序員可以獲得這個地址,并通過這個地址來訪 問這個對象。
C++允許在執行new時,對新建立的對象進行初始化。
用new建立的動態對象一般是不用對象名的,是通過指針訪問的,主要應用于動態的數據結構,如鏈表。
訪問鏈表中的結點,并不需要通過對象名,而是在上一個結點中存放下一個結點的地址,從而由上一個結點找到下一個結點,構成鏈接的關系。?
在執行new運算時,如果內存量不足,無法開辟所需的內存空間,目前大多數C++編譯系統都使new返回一個0指針值,根據返回值是否為0,可以判斷分配內存是否成功。
C++使用delete運算符時,在釋放內存空間之前,會自動調用析構函數。
C++對象賦值
C++對象之間的賦值可以通過賦值運算符=來實現。?
對象賦值的一般形式為
對象名1?=?對象名2;對象名1和對象名2必須屬于同一個類。
案例:C++對象賦值
#include? using?namespace?std; class?Box?//盒子類? {public?:Box(int?=10,int?=10,int?=10);?//聲明有默認參數的構造函數int?volume( );?//聲明求體積函數?private?:int?height;?//高?int?width;?//寬?int?length;?//長? }; Box::Box(int?h,int?w,int?len) {height=h;width=w;length=len; } int?Box::volume( ) {return?height*width*length;?//求體積 } int?main( ) {Box?box1(2,3,4);?//定義對象box1cout<<"box1的體積是:"<endl;Box box2;?//定義對象box2box2=box1;?//將box1的值賦給box2cout<<"box2的體積是:"<endl;?return?0; }編譯運行結果:
box1的體積是:24 box2的體積是:24-------------------------------- Process exited after?0.7038?seconds?with?return?value?0 請按任意鍵繼續. . .聲明:
本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。
總結
以上是生活随笔為你收集整理的C++对象的动态建立的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女生的网名优雅好听130个
- 下一篇: c++ 共享内存_Python3.8多进