行业知识
[c++] 继承和多态整理二
2026-11-03 13:29:43
来源:互联网转载
1 虚函数和纯虚函数
虚���数,之所以说是虚的,说的是在派生类中,可以覆盖基类中的虚函数;相对于虚函数来说,没有 virtual 修饰的函数可以叫做实函数,实函数就不能被覆盖。虚函数是实现多态的核心。虚函数和纯虚函数比较的话,虚函数可以在派生类中被覆盖,但是虚函数也是有自己的实现的,可以被直接调用;纯虚函数没有自己的实现,在派生类中可以被覆盖,并且必须实现。包含纯虚函数的类是抽象类,不能创建对象,如果抽象类的派生类中没有实现纯虚函数 ,那么派生类也是抽象类,不能创建对象。
虚函数和纯虚函数并没有严格的优劣之分。
从实际使用中,纯虚函数有一个优点,假如一个基类中的函数,派生类中必须实现自己的逻辑,而不能使用基类中的逻辑,那么就可以使用纯虚函数,这样在派生类中如果忘记实现了,那么编译器就会提示错误,起到了一个约束的作用;如果用虚函数实现,那么派生类中忘记实现的话,编译器也不会报错,起不到约束提醒的作用。
纯虚函数有以下两点:
(1)纯虚函数的声明方式
函数声明之后加 = 0,而不是花括号
(2)抽象类不能创建对象,抽象类的派生类如果没有实现所有的纯虚函数,派生类也是抽象类
(3)抽象类可以定义指针,并且可以使用派生类的指针给它赋值
如下是使用抽象类的一个例子:
#include #include class Phone {public: Phone() { std::cout