c++拷貝構造函數(shù) c 什么時候必須定義構造函數(shù),析構函數(shù),拷貝構造函數(shù)?
c 什么時候必須定義構造函數(shù),析構函數(shù),拷貝構造函數(shù)?當一個類含有一些數(shù)據(jù)成員,你需要在實例化類的時候就初始化這些成員,你就需要自己定義構造函數(shù)。例如Person類含有m_strName成員,你在聲
c 什么時候必須定義構造函數(shù),析構函數(shù),拷貝構造函數(shù)?
當一個類含有一些數(shù)據(jù)成員,你需要在實例化類的時候就初始化這些成員,你就需要自己定義構造函數(shù)。例如Person類含有m_strName成員,你在聲明該類是就將其賦值 Person myPerson("張三")
對于拷貝構造函數(shù),為了防止淺拷貝造成的兩個對象指向同一內(nèi)存,當刪除其中一個對象后導致另一對象指向內(nèi)容為空的時候,我們就需要定義自己的拷貝構造函數(shù)來進行深拷貝。
當你的類數(shù)據(jù)成員中使用了動態(tài)分配的內(nèi)存,你就需要定義自己的析構函數(shù)來釋放這部分內(nèi)存,防止內(nèi)存泄露。
系統(tǒng)定義的默認構造函數(shù)和析構函數(shù)函數(shù)名和類名相同,如Person類:
Person()構造函數(shù)
~Person()析構函數(shù)
c ,求三個長方體的體積,用構造函數(shù),析構函數(shù),拷貝構造函數(shù)?
代碼示例:
先定義一個長方體類T,定義三個對象求體積。
#include<iostream>
using namespace std
class T //定義一個體積類
{
private:
int L //長
int W //寬
int H //高
public:
void set()
void volume()
}
void T::set()
{
cout<<"長:"
cin>>L
cout<<"寬:"
cin>>W
cout<<"高:"
cin>>H
}
void T::volume()
{
cout<<"體積:"<<(L*W*H)<<endl
}
int main()
{
T t1,t2,t3
t1.set()
t1.volume()
t2.set()
t2.volume()
t3.set()
t3.volume()
}
何時調(diào)用構造函數(shù),復制構造函數(shù),析構函數(shù)?
構造函數(shù) 在對象生成時調(diào)用.可能是在定義的時候, 或者new分配的時候. 調(diào)用哪個構造函數(shù) 由構造參數(shù)決定. 如果構造參數(shù)是另一個同類對象,那就是復制構造函數(shù). 如果無參 那就是無參構造或者默認構造. 而析構函數(shù)是在對象生命周期結束, 即釋放時調(diào)用. new出來的對象會在delete時調(diào)用 局部變量 在退出作用域時調(diào)用. 全局變量和靜態(tài)局部變量在程序退出時調(diào)用.