目錄
一、構造函數(shù)
1、概念
2、作用
3、構造函數(shù)和其他概念的組合
4、拷貝構造函數(shù)
二、析構函數(shù)
1、概念
三、this指針
2、作用在類中,我們除了有函數(shù)之外,還有變量成員,為了方便我們實例化一個對象的時候給予該對象一些基本的數(shù)值,我們只能編寫相應的初始化函數(shù)接口以供外界調(diào)用,這是實例化類時絕大多數(shù)需要做的工作,所以編譯器為了統(tǒng)一化這個功能,衍生出了構造函數(shù)這個概念。構造函數(shù)的函數(shù)名跟類一致,且沒有返回值這個概念,在每一個類的內(nèi)部,都會有其特定的構造函數(shù),如果沒有自定義構造函數(shù),編譯器會幫我們生成一個空的構造函數(shù),并在實例化某個對象的時候自動調(diào)用該構造函數(shù)。
3、構造函數(shù)和其他概念的組合構造函數(shù)的作用特別簡單,就是將我們類內(nèi)的變量成員統(tǒng)一的進行有選擇的初始化,方便我們的使用。
class Student
{
public:
Student();//構造函數(shù)
Student(int a, int b = 0);//構造函數(shù)的函數(shù)重載與默認參數(shù),注意默認參數(shù)寫在函數(shù)定義處
private:
int m_a;
int m_b;
};
Student::Student(int a, int b):m_a(a),m_b(b)//構造參數(shù)的初始化列表,格式為():變量(值),變量(值)
{
}
Student::Student(int a, int b)//在函數(shù)體內(nèi)初始化的構造函數(shù)
{
m_a = a;
m_b = b;
}
4、拷貝構造函數(shù)二、析構函數(shù) 1、概念是指同一個類實例化出來的對象去初始化另一個對象,說白了就是拿一個同樣變量成員的對象內(nèi)的內(nèi)容去初始化另一個對象,如下:
class Student { public: Student();//構造函數(shù) Student(int a,int b); Student(Student &s); private: int m_a; int m_b; }; int main() { Student s1(10,20);//通過正常的構造函數(shù)初始化對象 Student s2(s1);//通過拷貝構造函數(shù)初始化對象 return 0; }
拷貝構造函數(shù)分為兩類,分別是淺拷貝和深拷貝。
- 淺拷貝:將原對象的變量存放的內(nèi)容原封不動的拷貝給新對象;
- 深拷貝:在淺拷貝的基礎上,當遇到引用或者指針變量時,其會給新對象也開辟一塊內(nèi)存空間,并把原對象的指針或引用變量指向的內(nèi)容拷貝到新對象開辟出來的內(nèi)存空間。
- 深拷貝相對淺拷貝更加安全和合理,它避免了兩個實例化同時釋放同一片空間的錯誤。
三、this指針析構函數(shù)是跟構造函數(shù)一對出現(xiàn)的,在一個類里面,析構函數(shù)也是默認存在的,如果我們沒有自定義,編譯器會幫我們生成一個默認的析構函數(shù),析構函數(shù)的函數(shù)名是在構造函數(shù)的基礎上最前面加了~,即~類名(),這個函數(shù)會在一個對象結束時由編譯器自動調(diào)用,幫助我們釋放掉這個對象申請的一系列堆空間。
this指針是編譯器自動生成的一個類實例化時指向自身對象的一個指針,大概的作用如下:
class Student { public: Student();//構造函數(shù) Student(int a,int b);//編譯器會修改為Student(int a,int b,Student *this) Student(Student &s); private: int m_a; int m_b; }; int main() { Student s1(10,20);//編譯器其實會將其修改為Student s1(10, 20, &s1) Student s2(s1);// return 0; } Student::Student(int a, int b)//在函數(shù)體內(nèi)初始化的構造函數(shù) { this->m_a = a;//可以通過this指針訪問對象的成員 this->m_b = b; }
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
名稱欄目:C++構造函數(shù)、析構函數(shù)-創(chuàng)新互聯(lián)
文章分享:http://sd-ha.com/article16/jjhdg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、建站公司、網(wǎng)站排名、外貿(mào)網(wǎng)站建設、自適應網(wǎng)站、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容