C++知识点总结:5.多态和虚函数(自用)


引用:
[1]C语言中文网


1. 多态和虚函数

前提:
类型转化(向上转型):当把派生类对象指针赋值给基类对象指针后,基类对象指针只能访问派生类的成员变量,但是不能访问派生类的成员函数。因为,编译器会根据指针类型来调用对应类型的成员函数。

引入问题:
这样就会限制灵活性,我们想要向上转型后,基类对象指针既可以调用派生类的成员变量,又可以调用派生类的成员函数。此时就可以通过虚函数来实现多态。

虚函数就是在需要多态的函数前加上virtual声明。只有虚函数声明后的成员函数(同名)才能多态。

多态:基类对象指针既可以调用自己的成员(成员变量和成员函数),又可以调用直接派生类或间接派生类的成员(成员变量和成员函数)。这种灵活的调用的形式就是多态

C++中,虚函数就是为了多态而存在的。

class A{
   
   
public:
    int m_a;
    virtual void display(){
   
   cout<<"class A: m_a="<<m_a<<endl;}
    A(int a);
};
A::A(int a):m_a(a){
   
   }

class B: public A{
   
   
public:
    int m_b;
    void display(){
   
   cout<<"class B: m_a="<<m_a<<", m_b="<<m_b<<endl;};
    void show(){
   
   cout<<"class B"<<endl;};
    B(int a, int b);
};
B::B(int a, int b):A(a), m_b(b){
   
   }

int main() {
   
   
    A *pa = new A(10);
    B *pb = new B(1, 2);
    pa = pb;
    pa->display()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉堃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值