国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】繼承 ⑦ ( 繼承中的對象模型分析 | 繼承中的構造函數(shù)和析構函數(shù) )

這篇具有很好參考價值的文章主要介紹了【C++】繼承 ⑦ ( 繼承中的對象模型分析 | 繼承中的構造函數(shù)和析構函數(shù) )。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。






一、繼承中的對象模型分析




1、繼承代碼示例


下面有 3 個類 , 分別是 A 類 , B 類 , C 類 ;

  • A 類是 基類 ;
  • B 類 公有繼承 A 類 , 并定義了新的 成員變量 y ;
  • C 類 公有繼承 B 類 , 并定義了新的 成員變量 z ;
class A {
public:
	int x;
};

class B : public A {
public:
	int y;
};

class C : public B {
public:
	int z;
};

分別定義上述 3 個類的對象 ,

	A objA;
	B objB;
	C objC;

2、基類與派生類內存模型


上述 3 個對象的內存模型如下 :

【C++】繼承 ⑦ ( 繼承中的對象模型分析 | 繼承中的構造函數(shù)和析構函數(shù) ),C++,c++,開發(fā)語言,繼承,構造函數(shù),析構函數(shù),原力計劃

  • A 類對象 objA 中有一個成員 int x , 在內存中只有一個 int 類型的空間 ;
  • B 類對象 objB 中 , 除了繼承自 A 類的 int x 成員 , 還有一個自己的 int y 成員 , 在內存中是 2 個 int 類型的空間 ;
  • C 類對象 objC 中 , 除了繼承自 B 類的 int x 和 int y 成員 , 還有一個自己的 int z 成員 , 在內存中是 3 個 int 類型的空間 ;

3、問題引入 - 派生類對象構造函數(shù)和析構函數(shù)調用


上述 繼承 的過程中 , 每一層繼承 , 都繼承了上一級 父類的 成員變量 , 同時自己也定義了新的成員變量 ;

  • 在 派生類對象 構造時 , 構造函數(shù)如何進行調用 ;
  • 在 派生類對象 析構時 , 析構函數(shù)如何進行調用 ;

本篇博客開始討論上述問題 ;


4、完整代碼示例 - 派生類對象內存模型


#include "iostream"
using namespace std;

class A {
public:
	int x;
};

class B : public A {
public:
	int y;
};

class C : public B {
public:
	int z;
};

int main() {

	A objA;
	B objB;
	C objC;
	

	// 控制臺暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	system("pause");

	return 0;
}




二、繼承中的構造函數(shù)和析構函數(shù)




1、子類構造函數(shù)與析構函數(shù)調用順序


繼承中的構造函數(shù)和析構函數(shù) :

  • 子類構造 : 子類對象 進行 構造 時 , 需要調用 父類 的 構造函數(shù) 對 繼承自父類的 成員變量 進行 初始化 操作 ; 構造函數(shù) 調用順序如下 :
    • 構造時 , 先調用 父類 的構造函數(shù) , 構造繼承自父類的成員 ;
    • 然后 , 再調用 子類 的 構造函數(shù) , 構造 子類 自己定義的成員 ;
  • 子類析構 : 子類對象 進行 析構 時 , 需要調用 父類 的 析構函數(shù) 對 繼承自父類的 成員變量 進行 析構 操作 ; 析構函數(shù)調 用順序如下 :
    • 析構時 , 先 調用 子類 的 析構函數(shù) , 析構 子類 自己的成員 ;
    • 然后 , 再調用 父類 的 析構函數(shù) , 析構 繼承自父類的成員 ;

2、子類構造函數(shù)參數(shù)列表


如果 父類 的 構造函數(shù) 有 參數(shù) , 則 需要再 子類 的 初始化列表中 顯示調用 該有參構造函數(shù) ;

如果 A 類有構造函數(shù) :

class A {
public:
	A(int a)
	{
		this->x = a;
		cout << "A 構造函數(shù)調用" << endl;
	}
}

B 類 如果繼承 A 類 ,

  • 如果 A 類有默認的構造函數(shù) , B 類的構造函數(shù)可以這么寫 , 不顯式調用 A 類的構造函數(shù) , 默認調用 A 類的 無參 默認構造函數(shù) ;
class B : public A {
public:
	B(int b)
	{
		this->y = b;
		cout << "B 構造函數(shù)調用" << endl;
	}
}
  • 如果 A 類 沒有 默認的構造函數(shù) , B 類的構造函數(shù) 必須 顯式調用 A 類的構造函數(shù) , 并傳入 A 類的構造函數(shù)參數(shù) ;
class B : public A {
public:
	B(int a, int b) : A(a)
	{
		this->y = b;
		cout << "B 構造函數(shù)調用" << endl;
	}
}

3、代碼示例 - 繼承中的構造函數(shù)和析構函數(shù)


代碼示例 :

#include "iostream"
using namespace std;

class A {
public:
	A(int a)
	{
		this->x = a;
		cout << "A 構造函數(shù)調用" << endl;
	}
	~A()
	{
		cout << "A 析構函數(shù)調用" << endl;
	}
public:
	int x;
};

class B : public A {
public:
	B(int a, int b) : A(a)
	{
		this->y = b;
		cout << "B 構造函數(shù)調用" << endl;
	}
	~B()
	{
		cout << "B 析構函數(shù)調用" << endl;
	}
public:
	int y;
};

class C : public B {
public:
	C(int a, int b, int c) : B(a, b)
	{
		this->z = c;
		cout << "C 構造函數(shù)調用" << endl;
	}
	~C()
	{
		cout << "C 析構函數(shù)調用" << endl;
	}
public:
	int z;
};

int main() {

	C obj(1, 2, 3);

	cout << "obj.x = " << obj.x << 
		 " , obj.y = " << obj.y << 
		 " , obj.z = " << obj.z << endl;
	

	// 控制臺暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	system("pause");

	return 0;
}

執(zhí)行結果 :

A 構造函數(shù)調用
B 構造函數(shù)調用
C 構造函數(shù)調用
obj.x = 1 , obj.y = 2 , obj.z = 3
請按任意鍵繼續(xù). . .
C 析構函數(shù)調用
B 析構函數(shù)調用
A 析構函數(shù)調用

【C++】繼承 ⑦ ( 繼承中的對象模型分析 | 繼承中的構造函數(shù)和析構函數(shù) ),C++,c++,開發(fā)語言,繼承,構造函數(shù),析構函數(shù),原力計劃文章來源地址http://www.zghlxwxcb.cn/news/detail-721086.html

到了這里,關于【C++】繼承 ⑦ ( 繼承中的對象模型分析 | 繼承中的構造函數(shù)和析構函數(shù) )的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 深入分析C++對象模型之移動構造函數(shù)

    接下來我將持續(xù)更新“深度解讀《深度探索C++對象模型》”系列,敬請期待,歡迎關注!也可以關注公眾號:iShare愛分享,自動獲得推文和全部的文章列表。 C++11新標準中最重要的特性之一就是引入了支持對象移動的能力,為了支持移動的操作,新標準引入了一種新的引用類

    2024年04月22日
    瀏覽(25)
  • 【C++】:構造函數(shù)和析構函數(shù)

    【C++】:構造函數(shù)和析構函數(shù)

    如果一個類中什么成員都沒有,簡稱為空類。 空類中真的什么都沒有嗎?并不是,任何類在什么都不寫時,編譯器會自動生成以下6個默認成員函數(shù)。 默認成員函數(shù) : 用戶沒有顯式實現(xiàn),編譯器會生成的成員函數(shù)稱為默認成員函數(shù) 。 這篇文章介紹的是 構造函數(shù) 和 析構函數(shù)

    2024年04月27日
    瀏覽(46)
  • C++篇----構造函數(shù)和析構函數(shù)

    C++篇----構造函數(shù)和析構函數(shù)

    在很多時候,當寫了初始化,動態(tài)開辟的,需要寫銷毀函數(shù),寫了銷毀函數(shù)之后,但是卻忘記了調用這些函數(shù),忘記調用初始化函數(shù)還好,編譯器會報錯,但是如果是忘記調用銷毀函數(shù),那么編譯器是不會報錯,但是不能說這個程序就沒錯哦了,反而有很大的問題,存在內存

    2024年02月01日
    瀏覽(30)
  • C++ 構造函數(shù)和析構函數(shù) 詳解

    C++ 構造函數(shù)和析構函數(shù) 詳解

    C++中用構造函數(shù)和析構函數(shù)來初始化和清理對象,這兩個函數(shù)將會被編譯器自動調用。對象的初始化和清理是非常重要的,如果我們不提供構造函數(shù)與析構函數(shù),編譯器會自動提供兩個函數(shù)的空實現(xiàn)。 構造函數(shù):主要作用于創(chuàng)建函數(shù)時對對象成員的屬性賦值。 析構函數(shù):主

    2024年02月02日
    瀏覽(45)
  • 【C++初階】構造函數(shù)和析構函數(shù)

    【C++初階】構造函數(shù)和析構函數(shù)

    ?? 默認成員函數(shù) 用戶沒有顯式實現(xiàn),編譯器會自動生成的成員函數(shù),稱為默認成員函數(shù)。 構造函數(shù) :完成對象的初始化工作。 析構函數(shù) :完成對象空間的清理工作。 拷貝構造 :使用同類對象初始化創(chuàng)建對象。 賦值重載 :把一個對象賦值給另外一個對象(該對象已存在

    2024年02月17日
    瀏覽(19)
  • 『C++成長記』構造函數(shù)和析構函數(shù)

    『C++成長記』構造函數(shù)和析構函數(shù)

    ?? 博客主頁: 小王又困了 ?? 系列專欄: C++ ?? 人之為學,不日近則日退? ?? 感謝大家點贊??收藏?評論?? 目錄 一、類的六個個默認成員函數(shù) ??1.1認識默認成員函數(shù)? 二、構造函數(shù) ??2.1為什么要有構造函數(shù) ??2.2構造函數(shù)的概念 ??2.3構造函數(shù)的特性 ??2.4編譯器

    2024年02月05日
    瀏覽(22)
  • C++初階——構造和析構函數(shù)

    目錄 1. 我們在經(jīng)常忘記寫或者調用初始化函數(shù)使得棧類中的變量是隨機值,易出錯有時忘記調用銷毀函數(shù),導致內存泄漏 2.構造函數(shù) 2.2 構造函數(shù)的特性 3. 析構函數(shù) 3.1 概念 3.2 特性 3.3 深入了解? 這里就引出了 構造和析構函數(shù) 2.1 特性: 函數(shù)名與類名相同 無返回值 對象實例化

    2024年02月14日
    瀏覽(25)
  • C++構造函數(shù)和析構函數(shù)(附示例代碼)

    構造函數(shù)和析構函數(shù)是面向對象編程中的重要概念,用于創(chuàng)建和銷毀對象。 構造函數(shù) 是一種特殊的函數(shù),它在對象被創(chuàng)建時自動調用。它的作用是初始化對象的狀態(tài),例如設置成員變量的默認值、分配資源等操作。構造函數(shù)與類同名且沒有返回值,可以有多個重載版本,同

    2024年02月03日
    瀏覽(39)
  • 【C++雜貨鋪】構造函數(shù)和析構函數(shù)

    【C++雜貨鋪】構造函數(shù)和析構函數(shù)

    ?? 默認成員函數(shù) 用戶沒有顯式實現(xiàn),編譯器會自動生成的成員函數(shù),稱為默認成員函數(shù)。 構造函數(shù) :完成對象的初始化工作。 析構函數(shù) :完成對象空間的清理工作。 拷貝構造 :使用同類對象初始化創(chuàng)建對象。 賦值重載 :把一個對象賦值給另外一個對象(該對象已存在

    2024年02月16日
    瀏覽(23)
  • C++類開發(fā)第二篇(淺析構造函數(shù)和析構函數(shù))

    C++類開發(fā)第二篇(淺析構造函數(shù)和析構函數(shù))

    構造函數(shù)是一種特殊的成員函數(shù),用于創(chuàng)建和初始化類的對象。它的 名稱與類的名稱相同 ,沒有返回值,也不需要顯式調用。在C++中,每個類都必須至少有一個構造函數(shù)。 當我們創(chuàng)建一個類的對象時,編譯器會自動調用構造函數(shù)來初始化該對象的成員變量。構造函數(shù)可以執(zhí)

    2024年02月19日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包