-seventy-
Welcome to my blog space.

多态  [Go]

/*
    1.什么是多态?
            1.“子类对象的地址”可以赋值给“父类指针”
        对于通过“父类指针”调用“父类和子类中都有的同名、同参数表的【虚函数】”的语句
        编译时并不确定要执行的是父类的【虚函数】,还是子类的【虚函数】
        当程序运行到该语句时
        如果“父类指针”指向的是一个“父类对象”,则父类的【虚函数】被调用
        如果“父类指针”指向的是一个“子类对象”,则子类的【虚函数】被调用
        我们称这种机制,叫作“多态(polymorphism)”

            2.包含【虚函数】的类称为“多态类”
        “多态”可以简单地理解为,同一条函数调用语句能调用不同的函数
        或者说,对不同对象发送同一消息,使得不同对象有各自不同的行为


    2.什么是虚函数?
        所谓“虚函数”,就是在声明时前面加了 virtual 关键字的成员函数
        注意!virtual 关键字只在类定义中的成员函数声明处使用,不能在类外部写成员函数体时使用
        同时,要注意,静态成员函数不能是【虚函数】。


    3.补充:
        “多态”在面向对象的程序设计语言中非常重要,以至于有类和对象的概念
        不支持多态的语言,只能被称作“基于对象的程序设计语言”而不能被称为“面向对象的程序设计语言”
        比如:Visual Basic 就是前者

        ---内容借鉴于"C语言中文网" [Go]
*/

 纯虚函数

#include <iostream>
using namespace std;

class A        // 含有“纯虚函数”的类叫做抽象类
{
public:
    virtual ~A() = 0;    // 析构函数实现"纯虚函数"时,还是要在外面写一下函数体的
    virtual void Print() = 0;    // 纯虚函数格式:"virtual" + "=0" + "没有函数体"
};
A::~A()
{

}

int main()
{
    // 抽象类不能用来定义对象(即:实例化对象),但是可以定义指针
    // 有什么用?可以为子类服务

    return 0;
}

 

posted on 2023-07-20 11:25  -seventy-  阅读(11)  评论(0)    收藏  举报