-
接口類:
僅含有純虛函數(shù)的類稱為接口類
(沒(méi)有數(shù)據(jù)成員,只有成員函數(shù),成員函數(shù)是純虛函數(shù))
查看全部 -
繼承自抽象類的純虛函數(shù),如果在子類中進(jìn)行實(shí)現(xiàn),那么子類就可以實(shí)例化
查看全部 -
含有純虛函數(shù)的類叫做抽象類
查看全部 -
之前的知識(shí):
虛函數(shù)和虛函數(shù)表
學(xué)習(xí):
純虛函數(shù):定義方式
查看全部 -
析構(gòu)函數(shù)的執(zhí)行順序:
先執(zhí)行子類的的析構(gòu)函數(shù),繼而會(huì)執(zhí)行父類的析構(gòu)函數(shù)
查看全部 -
函數(shù)的覆蓋:
子類中定義了和父類同名的虛函數(shù),此時(shí)發(fā)生了覆蓋
查看全部 -
虛函數(shù)表:
實(shí)現(xiàn)是? 派生類中的虛函數(shù)覆蓋了基類中虛函數(shù)指向的虛函數(shù)表中虛函數(shù)指針的地址,重新指向派生類中的虛函數(shù),而非基類中的同名虛函數(shù)
查看全部 -
內(nèi)存泄漏:
在析構(gòu)函數(shù)中加入virtual關(guān)鍵字
virtual?關(guān)鍵字修飾函數(shù)的限制:
不能修飾普通函數(shù),其修飾的函數(shù)必須是某個(gè)類的成員函數(shù)
不能修飾靜態(tài)成員函數(shù)(靜態(tài)成員函數(shù)其實(shí)不屬于任何一個(gè)類)
不能修飾內(nèi)聯(lián)函數(shù)
不能修飾構(gòu)造函數(shù)
查看全部 -
謝謝你了:
在實(shí)例化對(duì)象時(shí),如果是在棧中實(shí)例化,則在后面調(diào)用函數(shù)的時(shí)候使用取地址符號(hào)&;若是在堆中實(shí)例化,則后面調(diào)用函數(shù)的時(shí)候無(wú)需使用&,變量名本身已經(jīng)是一個(gè)地址。
CanShut *gun = new Gun();//堆中 ? ?//Gun gun;//棧中 ? ?// 調(diào)用含參函數(shù)hunting,將對(duì)象槍傳入函數(shù)中 ? ?hunting(gun);//堆中
查看全部 -
void flyMatch(Flyable *a,Flyable *b)//飛行比賽
//要求傳入一個(gè)會(huì)飛對(duì)象的指針,此時(shí)鳥類的對(duì)象指針可以傳入進(jìn)來(lái)
{
??? ....
??? a->takeoff();
??? b->takeoff();
??? a->land();
??? b->land();查看全部 -
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;/**
?*? 定義動(dòng)物類:Animal
?*? 成員函數(shù):eat()、move()
?*/
class Animal
{
public:
??? // 構(gòu)造函數(shù)
??? Animal(){cout << "Animal" << endl;}
??? // 析構(gòu)函數(shù)
?virtual ~Animal(){cout << "~Animal" << endl;}
??? // 成員函數(shù)eat()
?virtual void eat(){cout << "Animal -- eat" << endl;}
??? // 成員函數(shù)move()
?virtual void move(){cout << "Animal -- move" << endl;}
};/**
?* 定義狗類:Dog
?* 此類公有繼承動(dòng)物類
?* 成員函數(shù):父類中的成員函數(shù)
?*/
class Dog : public Animal
{
public:
??? // 構(gòu)造函數(shù)
?Dog(){cout << "Dog" << endl;}
??? // 析構(gòu)函數(shù)
?virtual ~Dog(){cout << "~Dog" << endl;}
??? // 成員函數(shù)eat()
?virtual void eat(){cout << "Dog -- eat" << endl;}
??? // 成員函數(shù)move()
?virtual void move(){cout << "Dog -- move" << endl;}
};int main(void)
{
??? // 通過(guò)父類對(duì)象實(shí)例化狗類
?Animal *p = new Dog();
??? // 調(diào)用成員函數(shù)
?p->eat();
??? p->move();
??? // 釋放內(nèi)存
??? delete p;
??? p = NULL;
???
?return 0;
}查看全部 -
函數(shù)的隱藏:子類中有與父類同名的函數(shù)
函數(shù)的覆蓋:子類中有與父類同名的虛函數(shù)
查看全部 -
靜態(tài)多態(tài):早綁定 --->函數(shù)重載? 在編譯時(shí)就已經(jīng)確定調(diào)用哪個(gè)函數(shù)
動(dòng)態(tài)多態(tài):晚綁定 --->繼承類間的同名函數(shù)調(diào)用,當(dāng)父類指針指向子類對(duì)象時(shí),在運(yùn)行時(shí)才判定調(diào)用的是子類中的同名函數(shù),而非父類
查看全部 -
多態(tài)定義:
查看全部 -
普通虛函數(shù)
虛析構(gòu)函數(shù)
純虛函數(shù):抽象類和接口類
RTTi:運(yùn)行時(shí)類型識(shí)別
異常處理
查看全部
舉報(bào)