C++ 纯虚函数
Posted 我是小白呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 纯虚函数相关的知识,希望对你有一定的参考价值。
概述
纯虚函数 (pure virtual function) 是只有函数的名字而不具备函数的功能, 不能被调用的虚成员函数.
基类的虚函数有时是考虑到派生类的需求, 在基类中预留一个函数名. 我们在设计类的时候, 常常有基类的成员函数并无意义, 具体功能由派生类决定, 这时候纯虚函数就派上用场了.
纯虚函数
纯虚函数没有函数体, 最后面的 “=0” 只起形式上的作用, 告诉编译系统 “这是纯虚函数”.
格式:
virtual 函数类型 函数名 (参数表列) =0;
例如:
virtual float area()=0; // 纯虚函数
virtual float area() const =0; // 纯虚常函数
virtual float area() const {return 0}; // 虚函数
如果一在一个类中声明了纯虚函数, 而在其派生类中没用对该函数定义, 则该函数在派生类中仍为纯虚函数.
例子
Animal 类:
#ifndef PROJECT6_ANIMAL_H
#define PROJECT6_ANIMAL_H
#include <iostream>
using namespace std;
class Animal {
public:
virtual void bark() = 0;
};
#endif //PROJECT6_ANIMAL_H
Dog 类:
#ifndef PROJECT6_DOG_H
#define PROJECT6_DOG_H
#include "Animal.h"
class Dog : public Animal{
public:
void bark() {
cout << "汪汪!" << endl;
}
};
#endif //PROJECT6_DOG_H
Cat 类:
#ifndef PROJECT6_CAT_H
#define PROJECT6_CAT_H
#include "Animal.h"
class Cat : public Animal{
public:
void bark() {
cout << "喵喵!" << endl;
}
};
#endif //PROJECT6_CAT_H
Pig 类:
#ifndef PROJECT6_PIG_H
#define PROJECT6_PIG_H
#include "Animal.h"
class Pig : public Animal {
public:
void bark() {
cout << "哼哼!" << endl;
}
};
#endif //PROJECT6_PIG_H
main:
#include <iostream>
#include "Animal.h"
#include "Dog.h"
#include "Cat.h"
#include "Pig.h"
using namespace std;
int main() {
Animal *pt;
Dog d1;
Cat c1;
Pig p1;
pt = &d1;
pt->bark();
pt = &c1;
pt->bark();
pt = &p1;
pt->bark();
return 0;
}
输出结果:
汪汪!
喵喵!
哼哼!
以上是关于C++ 纯虚函数的主要内容,如果未能解决你的问题,请参考以下文章