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

繼承(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

這篇具有很好參考價值的文章主要介紹了繼承(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、基本語法

#include <iostream>
using namespace std;
#include <string>

//普通實現(xiàn)頁面

//Java頁面
//class Java {
//public:
//	void header() {
//		cout << "首頁、公開課、登錄、注冊...(公共頭部)" << endl;
//	}
//	void footer() {
//		cout << "幫助中心、交流合作、站內(nèi)地圖...(公共底部)" << endl;
//	}
//	void left() {
//		cout << "Java、python、c++...(公共分類列表)" << endl;
//	}
//	void content() {
//		cout << "Java學(xué)科視頻" << endl;
//	}
//};
//
//
Python頁面
//class Python {
//public:
//	void header() {
//		cout << "首頁、公開課、登錄、注冊...(公共頭部)" << endl;
//	}
//	void footer() {
//		cout << "幫助中心、交流合作、站內(nèi)地圖...(公共底部)" << endl;
//	}
//	void left() {
//		cout << "Java、python、c++...(公共分類列表)" << endl;
//	}
//	void content() {
//		cout << "Python學(xué)科視頻" << endl;
//	}
//}; 
//
C++頁面
//class CPP {
//public:
//	void header() {
//		cout << "首頁、公開課、登錄、注冊...(公共頭部)" << endl;
//	}
//	void footer() {
//		cout << "幫助中心、交流合作、站內(nèi)地圖...(公共底部)" << endl;
//	}
//	void left() {
//		cout << "Java、python、c++...(公共分類列表)" << endl;
//	}
//	void content() {
//		cout << "C++學(xué)科視頻" << endl;
//	}
//};

//繼承實現(xiàn)頁面

//公共頁面
class BasePage {
public:
		void header() {
			cout << "首頁、公開課、登錄、注冊...(公共頭部)" << endl;
		}
		void footer() {
			cout << "幫助中心、交流合作、站內(nèi)地圖...(公共底部)" << endl;
		}
		void left() {
			cout << "Java、python、c++...(公共分類列表)" << endl;
		}
};

//Java頁面
class Java :public BasePage {
public:
	void content() {
				cout << "Java學(xué)科視頻" << endl;
			}
};

//Python頁面
class Python :public BasePage {
public:
	void content() {
		cout << "Python學(xué)科視頻" << endl;
	}
};

//C++頁面
class CPP :public BasePage {
public:
	void content() {
		cout << "C++學(xué)科視頻" << endl;
	}
};

void test01() {
	cout << "Java下載視頻頁面如下:" << endl;
	Java ja;
	ja.header();
	ja.footer();
	ja.left();
	ja.content();

	cout << "---------------------------" << endl;
	cout << "Python下載視頻頁面如下:" << endl;
	Python py;
	py.header();
	py.footer();
	py.left();
	py.content();


	cout << "---------------------------" << endl;
	cout << "C++下載視頻頁面如下:" << endl;
	CPP cpp;
	cpp.header();
	cpp.footer();
	cpp.left();
	cpp.content();
}

int main() {

	test01();



	system("pause");
	return 0;
}

繼承(個人學(xué)習(xí)筆記黑馬學(xué)習(xí)),黑馬c++學(xué)習(xí)筆記,學(xué)習(xí),筆記,c++


2、繼承方式

繼承方式一共有三種:

  • 公共繼承
  • 保護繼承
  • 私有繼承
#include <iostream>
using namespace std;
#include <string>


//公共繼承
class Base1 {
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

class Son1 :public Base1 {
	void func() {
		m_A = 10;//父類中的公共權(quán)限成員 到子類中依然是公共權(quán)限
		m_B = 10;//父類中的保護權(quán)限成員 到子類中依然是保護權(quán)限
		//m_C = 10;//父類中的私有權(quán)限成員 子類訪問不到
	}
};
void test01() {
	Son1 s1;
	s1.m_A = 100;
	//s1.m_B = 100;//到son1中 m_B是保護權(quán)限 類外訪問不到
}

//保護繼承
class Base2 {
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

class Son2 :protected Base2 {
public:
	void func() {
		m_A = 10;//父類中的公共權(quán)限成員 到子類中是保護權(quán)限
		m_B = 10;//父類中的保護權(quán)限成員 到子類中依然是保護權(quán)限
		//m_C = 10;//父類中的私有權(quán)限成員 子類訪問不到
	}
};

void test02() {
	Son2 s1;
	//s1.m_A = 1000;//在son2中 m_A變?yōu)楸Wo權(quán)限 因此類外訪問不到
	//s1.m_B = 1000;//在son2中 m_B保護權(quán)限 不可以訪問
}

//私有繼承
class Base3 {
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};
class Son3 :private Base2 {
public:
	void func() {
		m_A = 10;//父類中的公共權(quán)限成員 到子類中是私有權(quán)限
		m_B = 10;//父類中的保護權(quán)限成員 到子類中是私有權(quán)限
		//m_C = 10;//父類中的私有權(quán)限成員 子類訪問不到
	}
};

class GrandSon3 :public Son3 {
public:
	void func() {
		//m_A = 1000;//到了son3中 m_A變?yōu)樗接?即使是兒子 也訪問不到
		//m_B = 1000;//到了son3中 m_B變?yōu)樗接?即使是兒子 也訪問不到
	}
};

void test03() {
	Son3 s1;
	//s1.m_A = 1000;//在son3中 m_A變?yōu)樗接袡?quán)限 因此類外訪問不到
	//s1.m_B = 1000;//在son3中 m_B私有權(quán)限 不可以訪問
}

int main() {





	system("pause");
	return 0;
}

3、繼承中的對象模型

#include <iostream>
using namespace std;
#include <string>

class Base {
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

class Son :public Base {
public:
	int m_D;

};

//利用開發(fā)人員命令提示符工具查看對象模型
//跳轉(zhuǎn)盤符 F:
//跳轉(zhuǎn)文件路徑 cd 具體路徑下
//查看命令
// cl /d1 reportSingleClassLayout類名 文件名


void test01() {

	//16
	//父類中所有非靜態(tài)成員屬性都會被子類繼承下去
	//父類中私有成員屬性 是被編譯器給隱藏了 因此是訪問不到,但是缺省被繼承下去了
	cout << "size of Son = " << sizeof(Son) << endl;
}


int main() {


	system("pause");
	return 0;
}

4、繼承中構(gòu)造和析構(gòu)順序

#include <iostream>
using namespace std;
#include <string>

//繼承中的構(gòu)造和析構(gòu)順序
class Base {
public:
	Base() {
		cout << "Base的構(gòu)造函數(shù)" << endl;
	}

	~Base() {
		cout << "Base的析構(gòu)函數(shù)" << endl;

	}
};
class Son :public Base {
public:
	Son() {
		cout << "Son的構(gòu)造函數(shù)" << endl;
	}

	~Son() {
		cout << "Son的析構(gòu)函數(shù)" << endl;

	}
};

void test01() {

	//繼承的構(gòu)造和析構(gòu)順序如下:
	//先構(gòu)造父類 再構(gòu)造子類,析構(gòu)的順序與構(gòu)造的順序相反
	Son s;
}


int main() {

	test01();

	system("pause");
	return 0;
}

5、同名成員處理

#include <iostream>
using namespace std;
#include <string>

class Base {
public:

	Base() {
		m_A = 100;
	}
	void func() {
		cout << "Base - func()調(diào)用" << endl;
	}

	void func(int a) {
		cout << "Base - func(int a)調(diào)用" << endl;
	}

	int m_A;
};
class Son :public Base {
public:
	Son() {
		m_A = 200;
	}

	void func() {
		cout << "Son - func()調(diào)用" << endl;
	}

	int m_A;
};

//同名成員屬性
void test01() {
	Son s;
	cout << "Son 下m_A = " << s.m_A << endl;

	//如果通過子類對象 訪問到父類中同名成員 需要加作用域
	cout << "Base 下m_A = " << s.Base::m_A << endl;

}

//同名成員函數(shù)處理
void test02() {
	Son s;
	s.func();//直接調(diào)用 調(diào)用是子類中的同名成員

	s.Base::func();//調(diào)用父類的

	//如果子類中出現(xiàn)和父類同名的成員函數(shù),子類的同名成員會隱藏掉父類中所有同名的成員函數(shù)
	//如果想訪問到父類中被隱藏的同名成員函數(shù),需要加作用域
	//s.func(100); 錯誤
	s.Base::func(100);
}

int main() {

	//test01();
	test02();

	system("pause");
	return 0;
}

6、同名靜態(tài)成員處理方法

#include <iostream>
using namespace std;
#include <string>

class Base {
public:
	static int m_A;

	static void func() {
		cout << "Base - static void func()" << endl;
	}
};
int Base::m_A=100;


class Son :public Base {
public:
	static int m_A;

	static void func() {
		cout << "Son - static void func()" << endl;
	}
};
int Son::m_A = 200;


//同名靜態(tài)成員屬性
void test01() {

	//1、通過對象訪問
	cout << "通過對象訪問:" << endl;
	Son s;
	cout << " Son 下m_A = " << s.m_A << endl;
	cout << "Base 下m_A = " << s.Base::m_A << endl;


	//2、通過類名訪問
	cout << "通過類名訪問:" << endl;
	cout << "Son 下m_A = " << Son::m_A << endl;
	//第一個:代表通過類名方式訪問 第二個:代表訪問父類作用域下
	cout << "Base 下m_A = " << Son::Base::m_A << endl;

}
//同名靜態(tài)成員函數(shù)
void test02() {

	//1、通過對象訪問
	cout << "通過對象訪問:" << endl;
	Son s;
	s.func();
	s.Base::func();

	//2、通過類名訪問
	cout << "通過類名訪問:" << endl;
	Son::func();
	Son::Base::func();
}


int main() {

	//test01();
	test02();

	system("pause");
	return 0;
}

7、多繼承語法

#include <iostream>
using namespace std;
#include <string>

class Base1 {
public:
	Base1() {
		m_A = 100;
	}

	int m_A;
};

class Base2{
public:
	Base2() {
		m_A = 200;
	}

	int m_A;
};


//子類 需要繼承Base1 和Base2
class Son :public Base1, public Base2 {
public:

	Son() {
		m_C = 300;
		m_D = 400;
	}
	int m_C;
	int m_D;
};

void test01() {
	Son s;
	cout << "sizeof Son = " << sizeof(s) << endl;
	//當(dāng)父類中出現(xiàn)同名成員,需要加作用域區(qū)分
	cout << "Base1::m_A = " << s.Base1::m_A << endl;
	cout << "Base2::m_A = " << s.Base2::m_A << endl;
}

int main() {

	test01();


	system("pause");
	return 0;
}

8、菱形繼承

菱形繼承概念
兩個派生類繼承同一個基類

又有某個類同時繼承者兩個派生類

這種繼承被稱為菱形繼承,或者鉆石繼承

#include <iostream>
using namespace std;
#include <string>

//動物類
class Animal {
public:
	int m_Age;
};

//利用虛繼承 解決菱形繼承的問題
//繼承之前 加上關(guān)鍵字 virtual 變?yōu)樘摾^承
// Animal類稱為 虛基類
//羊類  
class Sheep :virtual public Animal {

};

//駝類
class Tuo :virtual public Animal {

};

//羊駝類
class SheepTuo :public Sheep, public Tuo {

};

void test01() {
	SheepTuo st;
	st.Sheep::m_Age = 18;
	st.Tuo::m_Age = 28;
	//當(dāng)菱形繼承,兩個父類擁有相同數(shù)據(jù),需要加以作用域區(qū)分
	cout << "st.Sheep::m_Age = " << st.Sheep::m_Age << endl;
	cout << "st.Tuo::m_Age =" << st.Tuo::m_Age << endl;
	cout << "st.m_Age = " << st.m_Age << endl;

	//這份數(shù)據(jù)我們知道 只要有一份就可以,菱形繼承導(dǎo)致數(shù)據(jù)有兩份,資源浪費

}

int main() {

	test01();


	system("pause");
	return 0;
}

繼承(個人學(xué)習(xí)筆記黑馬學(xué)習(xí)),黑馬c++學(xué)習(xí)筆記,學(xué)習(xí),筆記,c++文章來源地址http://www.zghlxwxcb.cn/news/detail-696322.html

到了這里,關(guān)于繼承(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 內(nèi)存四區(qū)(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

    內(nèi)存四區(qū)(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

    C++程序在執(zhí)行時,將內(nèi)存大方向劃分為4個區(qū)域: 代碼區(qū):存放函數(shù)體的二進制代碼,由操作系統(tǒng)進行管理的 全局區(qū):存放全局變量和靜態(tài)變量以及常量 棧區(qū):編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量等 堆區(qū):由程序員分配和釋放,若程序員不釋放,程序結(jié)束時由操作系統(tǒng)回

    2024年02月10日
    瀏覽(54)
  • 運算符(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

    運算符(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

    ?加減乘除 取模?? 自增自減? ?? 邏輯非! 邏輯與? 邏輯或||?

    2024年02月11日
    瀏覽(46)
  • 跳轉(zhuǎn)語句(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

    跳轉(zhuǎn)語句(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

    ? ? ? 如果是奇數(shù)輸出,偶數(shù)不輸出 ? ?

    2024年02月11日
    瀏覽(23)
  • 運算符重載(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))
  • 通訊錄管理系統(tǒng)(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

    通訊錄管理系統(tǒng)(個人學(xué)習(xí)筆記黑馬學(xué)習(xí))

    通訊錄是一個可以記錄親人、好友信息的工具。 本教程主要利用C++來實現(xiàn)一個通訊錄管理系統(tǒng)系統(tǒng)中需要實現(xiàn)的功能如下: 添加聯(lián)系人:向通訊錄中添加新人,信息包括(姓名、性別、年齡、聯(lián)系電話、家庭住址)最多記錄1000人 顯示聯(lián)系人:顯示通訊錄中所有聯(lián)系人信息 刪除聯(lián)系

    2024年02月10日
    瀏覽(778)
  • c++學(xué)習(xí)筆記-提高編程-模板(嗶站-黑馬程序員c++教學(xué)視頻)

    c++學(xué)習(xí)筆記-提高編程-模板(嗶站-黑馬程序員c++教學(xué)視頻)

    通用的模具,提高代碼復(fù)用性 不可以直接使用,只是一個框架;模板的通用性并不是萬能的。 3.2.1 函數(shù)模板 函數(shù)模板的作用:建立一個通用函數(shù),其函數(shù)返回值類型和參數(shù)類型可以不具體確定,用一個虛擬的類型來代表。 1)語法: templatetypename T//函數(shù)聲明或定義 函數(shù) temp

    2023年04月11日
    瀏覽(21)
  • C++從小白到初級工程師【個人學(xué)習(xí)筆記】

    C++從小白到初級工程師【個人學(xué)習(xí)筆記】

    C++作為能和計算機硬件打交道的語言,在計算機世界中具有重要意義。在Android 應(yīng)用層的JNI開發(fā)中,Android framework層、驅(qū)動層、kernel層均使用廣泛。 相應(yīng)的,如果想對Android系統(tǒng)漏洞和安全防護有更多了解,對C++的了解是必不可少的。 本文是筆者對于自己系統(tǒng)學(xué)習(xí)C++語言的記錄

    2024年01月23日
    瀏覽(17)
  • 【C++從入門到入土】C++學(xué)習(xí)資料和個人C++筆記整理------導(dǎo)航頁

    消失了一段時間,主要在忙著學(xué)習(xí)c++和畢業(yè)的事。上個星期拿到雙證,也正式離校了,研究生生活也正式宣布結(jié)束,真是一晃就過了三年。 秋招完呢就意識到想做視覺算法(應(yīng)用工程類,不是research崗位),C++是基本功,所以問了好多C++大佬,整理了一份適合自己的學(xué)習(xí)路線

    2024年02月13日
    瀏覽(25)
  • C++類和對象----封裝(觀看黑馬教程整理的筆記)

    C++類和對象----封裝(觀看黑馬教程整理的筆記)

    C++面向?qū)ο蟮娜筇匦詾椋悍庋b、繼承、多態(tài) C++認(rèn)為萬事萬物都皆為對象,對象上有其屬性和行為 例如: ? 人可以作為對象,屬性有姓名、年齡、身高、體重…,行為有走、跑、跳、吃飯、唱歌… ? 車也可以作為對象,屬性有輪胎、方向盤、車燈…,行為有載人、放音樂、

    2024年02月11日
    瀏覽(91)
  • Vue學(xué)習(xí)筆記(黑馬前端)

    Vue學(xué)習(xí)筆記(黑馬前端)

    Vue階段作業(yè)地址 Vue 快速上手 Vue 概念 / 創(chuàng)建實例 / 插值表達式 / 響應(yīng)式特性 / 開發(fā)者工具 Vue 指令 v-html / v-show / v-if / v-else / v-on / v-bind / v-for / v-model 綜合案例 - 小黑記事本 列表渲染 / 刪除功能 / 添加功能 / 底部統(tǒng)計 / 清空 Vue 是什么 概念:Vue 是一個用于 構(gòu)建用戶界面 的 漸

    2024年04月15日
    瀏覽(46)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包