- 抽象类的一般规范
- 注意 : ``我们在写抽象函数的时候 .h文件一定要加上# ifndef ,#define, # endif // 预处理指令``不然编译器会循环引用报错
- 实战
- 结果
- 注意 ``如果继承类没有重新纯虚函数,那么这个类本身也是一个抽象函数``
.h文件
#ifndef CLASSNAME_H
#define CLASSNAME_H
class ClassNamw{
//
// 省略其他逻辑代码
//
//
public:
virtual void showInfo()=0;//纯虚函数-----抽象函数
}
#endif //CLASSNAME_H
.cpp文件
class ClassNamw{
//
// 省略其他逻辑代码
//
//
}
带关键字virtual的函数并且函数直接=0且没有函数体的函数称为抽象函数,带抽象函数的类称为抽象类
注意 : 我们在写抽象函数的时候 .h文件一定要加上# ifndef ,#define, # endif // 预处理指令不然编译器会循环引用报错 实战我们现在有水果抽象类
.h文件
#ifndef FRUITS_H #define FRUITS_H #includeusing namespace std; //水果 抽象类 class Fruits { public: Fruits(int, string); public: int size=0;//水果的大小 string relish;//水果的味道 virtual void showInfo()=0;//抽象函数 }; #endif //FRUITS_H
.cpp文件
#include "Fruits.h"
Fruits::Fruits(int size, string relish):size(size),relish(relish) {}
苹果类—实现水果类
.h文件
#ifndef APPLE_H
#define APPLE_H
#include "Fruits.h"
#include "iostream"
using namespace std;
class Apple : public Fruits {
public:
Apple(int, string);
void showInfo();
};
#endif //FRUITS_H
.cpp文件
#include "Apple.h"
Apple::Apple(int size, string relish) : Fruits(size, relish) {
}
void Apple::showInfo() {
cout << "我是苹果,我的信息是 大小: " << size << "我的味道是: " << relish << endl;
}
橘子类–实现水果类
.h文件
#ifndef TANGERINE_H
#define TANGERINE_H
#include "Fruits.h"
class Tangerine : public Fruits {
public:
Tangerine(int, string);
void showInfo();
};
#endif //TANGERINE_H
.cpp文件
#include "Tangerine.h"
Tangerine::Tangerine(int size, string relish): Fruits(size,relish) {
}
void Tangerine::showInfo() {
cout << "我是橘子的信息 大小:" << size << "我是味道: " << relish << endl;
}
还有我们的main函数
#include结果#include "Apple.h" #include "Tangerine.h" int main() { Apple apple(14, "酸的"); Tangerine tangerine(3, "甜的"); apple.showInfo(); tangerine.showInfo(); }
我是苹果,我的信息是 大小: 14我的味道是: 酸的 我是橘子的信息 大小:3我是味道: 甜的注意 如果继承类没有重新纯虚函数,那么这个类本身也是一个抽象函数



