C++ 多態原理初步01

在這里插入圖片描述
當父類 Animal 的speak 前面加上 virtual 關鍵字之后,這個speak函數就變成了虛函數,Animal類結構發生了變化, 有了一個vfptr (虛函數指針),指向了vftable(虛函數表), 這個虛函數表里面有函數speak的實際地址, 當子類Cat繼承了這個Animal類之后,Cat類內部結構 也會有 vfptr,也會指向一個vftable,如果Cat類重寫了這個speak這個函數, 那么Cat類的那個 vftable表里面,記錄的 函數地址就是 &Cat::speak的地址了
父類內部結構
子類的內部結構

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排序算法2歸并排序

文章沒有解釋和代碼注釋&#xff0c;代碼經改進&#xff0c;做成了好理解,關鍵是好記憶的方式進行書寫。用于自己進行查閱 #include <stdio.h>void merge(int arr1[],int left ,int mid ,int right) {int temp[sizeof(arr1)];int i left ;int j mid 1;int t 0;while…

C++ 多態之純虛函數和抽象類01

純虛函數的語法&#xff0c; virtual void func() 0;如果類中有了純虛函數&#xff0c; 那么這個類也成為抽象類抽象類無法實例化對象繼承了抽象類的子類&#xff0c;必須要重寫父類中的純虛函數&#xff0c;否則的話&#xff0c;子類也是屬于抽象類&#xff0c;無法實例化

堆排序面試

#文章沒有解釋和代碼注釋&#xff0c;代碼經改進&#xff0c;做成了好理解,關鍵是好記憶的方式進行書寫。用于自己進行查閱 #include <stdio.h>void swap(int arr[],int i,int j) {int temp arr[i];arr[i] arr[j];arr[j] temp; }void heapify(int arr[],int i,int si…

C++ 多態之虛析構與純虛擬購01

class Animal { public:Animal(){cout << "Animal的構造函數調用" << endl;}//虛析構 解決的問題是 當子類中有堆區內容&#xff0c;釋放時候對導致釋放不干凈&#xff0c;內存泄露//virtual ~Animal()//{// cout << "Animal的析構函數調用&…

面向對象與面向過程的本質的區別

https://blog.csdn.net/jerry11112/article/details/79027834 如果你很想搞明白面向對象是什么&#xff0c;面向過程是什么&#xff0c;或者說二者之間的區別是什么&#xff0c;那么就花費一點時間來研讀一下這篇博客&#xff0c;你一定會有很大的收獲的&#xff01; 一、面向…

C++ 向上轉型初步01

1.編譯器通過指針來訪問成員變量&#xff0c;指針指向哪個對象就使用哪個對象的數據&#xff1b;編譯器通過指針的類型來訪問成員函數&#xff0c;指針屬于哪個類的類型就使用哪個類的函數。 但是父類 函數如果變成虛函數&#xff0c;子類重寫了這個函數&#xff0c; 那么現象…

虛函數和純虛函數詳解

https://mp.weixin.qq.com/s?__bizMzAxNzYzMTU0Ng&mid2651289202&idx1&sn431ffd1fae4823366a50b68aed2838d4&chksm80114627b766cf31f72018ef5f1fe29591e9f6f4bd72018e7aea849342ca6f0a271fb38465ae#rd 打開鏈接看。轉載文章&#xff0c;注明出處 <p>學…

C++ 繼承中的同名成員的情況01

class Base { public:Base(){this->m_A 100;}void func(){cout << "Base中的Func調用" << endl;}void func(int a){cout << "Base中的Func(int a)調用" << endl;}int m_A; }; class Son : public Base { public:Son(){this-&g…

進程前臺運行后臺運行的相關命令

command& 讓進程在后臺運行jobs 查看后臺運行的進程fg %n 讓后臺運行的進程n到前臺來bg %n 讓進程n到后臺去&#xff1b; ctrl z 可以將一個正在前臺執行的命令放到后臺&#xff0c;并且暫停

西安電子科技大學求職打點

這兩天 一直在西安電子科技大學找工作&#xff0c;感覺自己漸漸失去了學習的狀態&#xff0c;本來很 多會的知識點都已經不會了。   今天休息一天&#xff0c;沒有去招聘會&#xff0c;看了看相關的知識&#xff0c;做了做題。也希望自己盡快恢復學習的感覺&#xff0c;溫故…

C++ 泛型編程模板 之 函數模板初步01

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;void mySwapInt(int &a, int &b) {int temp a;a b;b temp; } void mySwapDouble(double &a, double &b) {double temp a;a b;b temp; } //利用模板實現通用交換函數 temp…

grep參數說明及常用用法

grep參數說明及常用用法 查看文件內容 [koulocalhost ~]$ more size.txt b124230 b034325 a081016 m7187998 m7282064 a022021 a061048 m9324822 b103303 a013386 b044525 m8987131 B081016 M45678 B103303 BADc2345 [] : 查看符合范圍內的信息 [koulocalho…

C++ 普通函數與函數模板 區別以及調用規則01

//普通函數 和 函數模板 區別 int myPlus(int a, int b) {return a b; }template<class T> T myPlus2(T a, T b) {return a b; }void test01() {int a 10;int b 20;char c c;cout << myPlus(a, c) << endl; //隱式類型轉換 將 char c轉為 int類型//myP…

C++ 模板的局限性以及解決01

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include <string>class Person { public:Person(string name, int age){this->m_Name name;this->m_Age age;}string m_Name;int m_Age; };//通過模板進行兩個數據比較 templat…

進程的狀態與種類

● 運行&#xff1a;正占用處理器   ● 就緒&#xff1a;只要獲得處理器即可運行。   ● 阻塞&#xff1a;正等待某個事件&#xff08;如I/O完成&#xff09;的發生。  在不少系統中&#xff0c;還增加了兩種基本狀態&#xff1a;   ● 新狀態&#xff1a;一個進程剛剛…

C++ 類模板語法初步01

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include <string> //類模板 //template下面緊跟著的內容是類&#xff0c;那么這個類稱為 類模板 // 類模板中的類型 也可以有默認參數 // 泛型編程 類型參數化template<class NAM…

int * p =NULL;和*p =NULL的區別a和a的區別

1.int * p NULL;和*p NULL的區別 1 .int * p NULL int *pNULL&#xff1b;定義一個指針變量p&#xff0c;其指向的內存里面保存的是int類型的數據&#xff1b;再定義變量p的同時把p的值設置為0x00000000&#xff0c; 而不是把*p的值設置為0x00000000 2.*p NULL int i 10&am…

當我們說TCP是可靠協議時,我們真正表達的是什么

轉載出處&#xff1a;https://blog.csdn.net/dog250/article/details/82177299 很明確地說&#xff0c;從通信意義上推敲&#xff0c;TCP一點都不可靠。一個抽象的協議&#xff0c;怎么可能左右介質來保證可靠&#xff0c;不存在的。但凡是經由某種介質的通信行為均不可能是絕對…

IP地址=192.168.127.101,子網掩碼255.255.255.192,計算網絡地址,主機號,廣播地址和主機最大數

純手寫&#xff0c;如果哪寫錯了&#xff0c;還希望指正 IP地址192.168.127.101&#xff0c;子網掩碼255.255.255.192&#xff0c;計算網絡地址&#xff0c;主機號&#xff0c;廣播地址和主機最大數 255.255.255.192子網掩碼轉換成二進制為 11111111.11111111.11111111.11000…

C++ 類模板遇到繼承的問題以及解決

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;template<class T> class Base {T m_A; //子類創建時候 必須要知道T的類型&#xff0c;才能給父類中的m_A分配內存 };template<class T1 , class T2> class Son :public Base<T2…