【C++ 多态 虚函数的设置条件】

本文介绍了C++中的多态性,它是面向对象编程的核心概念,允许通过统一的接口调用不同对象的不同方法。多态的实现依赖于虚函数,基类的虚函数使得派生类能够覆盖并实现自己的版本。在C++中,构造函数不能声明为虚函数,但析构函数可以。示例代码展示了如何使用虚函数进行多态调用。
摘要由CSDN通过智能技术生成

C++多态

多态:字面意思“多种状态”,一个接口,多种方法。
程序在运行时才决定调用哪个方法,是面向对象编程的核心概念多态性:将接口与实现进行分离。也就是实现共同的方法,但因个体差异不同,采用不同的策略
oop(面向对象编程)特点:
1、封装(Wrap):实现细节的隐藏,使代码模块化
2、继承(inheritance):扩展已存在的代码,目的是代码重用
3、多态(Polymorphism):实现接口重用,不论传递过来的那个类对象。
函数都能通过同一个接口调用到适应各自对象的方法。

多态的实现:使用virtual关键字修饰的成员函数即虚函数
虚函数的设置条件:
        1、非类的成员函数不能设置为 虚函数
        2、类的静态成员不能定义为 虚函数 (静态成员函数整个类域可见,与类不相关)
        3、构造函数不能定义为 虚函数(类对象不能调用构造函数)
            但是析构函数可以设置为虚函数 (可以通过delete运算符调用析构)
        4、成员函数需要使用virtual关键字修饰,定义时不需要
        5、基类的成员函数设置为虚函数,那么派生类中同名函数(函数名,形参类型、个数、返回值类型全一样)
            自动成为虚函数
#include<iostream>
using namespace std;
class Base
{
    public:
        virtual void priMsg()
        {
            cout << __func__ << " line: " <<__LINE__ << endl;
        }
        int priMsg(int x)
        {
            return 0;
        }
};
class Subclass:public Base
{
    private:
        void priMsg()
        {
            cout << __func__ << " line: " <<__LINE__ << endl;
        }
        int priMsg(int x)
        {
            return 0;
        }
};
void test(Base *p)
{
    p->priMsg();
}

int main()
{
    Base obj1;
    Subclass obj2;

    test(&obj1);
    test(&obj2);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值