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;
}