多态 [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; }
浙公网安备 33010602011771号