C++多态与虚函数

#include<bits/stdc++.h>
using namespace std;
class A
{
public:
void prin() { cout<<"This is A"<<endl;}
};
class B:public A
{
public:
void prin() {cout<<"This is B"<<endl;}
};
int main()
{
A a;
B b;
A* p1=&a;
A* p2=&b;
p1->prin();
p2->prin();
}

得到:

This is A

This is A

#include<bits/stdc++.h>
using namespace std;
class A
{
public:
virtual void prin() { cout<<"This is A"<<endl;}
};
class B:public A
{
public:
void prin() {cout<<"This is B"<<endl;}
};
int main()
{
A a;
B b;
A* p1=&a;
A* p2=&b;
p1->prin();
p2->prin();
}

得到:

This is A

This is B


多态性:一个名字多种语义,或界面相同多种实现。重载函数是多态性的一种简单形式  。

动态联编:虚函数允许函数调用与函数体的联系

虚函数声明格式:virtual 成员函数。虚函数必须是类的成员函数。 

                          构造函数不能是虚函数但析构函数可以是虚函数。

                         一个虚函数在派生类中相同的重载函数都保持虚函数的特性。

                         不能将友元函数说明为虚函数,但是虚函数可以称为另一个类的友元。   

实现多态:实现运行时多态的关键首先是要说明虚函数,另外,必须用基类指针调用派生类的不同实现版本,而且通过基类的指                   针只能访问派生类从基类中继承的成员。

纯虚函数:纯虚函数是一种特殊的虚函数,在基类中只把它声明为纯虚函数不进行定义,在基类的派生类中进行定义实现功能。                   纯虚函数为各个派生类提供一个公共界面。

                 一个具有纯虚函数的基类称为抽象类。

                 抽象类不能建立对象可以声明引用和对象。    

说明形式:virtual 类型 函数名(参数表)=0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值