广东建设局网站首页,广州海珠区房价2023年最新房价,unity网站后台怎么做,重庆建设集团公司在C中#xff0c;纯虚函数和抽象类是面向对象编程中的重要概念#xff0c;用于实现多态性和接口定义 1.纯虚函数#xff08;Pure Virtual Function#xff09;#xff1a; 纯虚函数是在基类中声明的虚函数#xff0c;但没有提供实现。它们以关键字声明#xff0c;并在函…
在C中纯虚函数和抽象类是面向对象编程中的重要概念用于实现多态性和接口定义 1.纯虚函数Pure Virtual Function 纯虚函数是在基类中声明的虚函数但没有提供实现。它们以关键字声明并在函数声明的末尾加上来指示它是一个纯虚函数。virtual 0纯虚函数的存在使得基类成为抽象类无法实例化对象。派生类必须提供纯虚函数的实现才能实例化对象。纯虚函数用于定义接口要求派生类提供特定的行为实现。
class Base {
public:virtual void show() 0; // 纯虚函数
};class Derived : public Base {
public:void show() override {cout Derived class implementation endl;}
};2.抽象类Abstract Class
包含纯虚函数的类被称为抽象类。抽象类不能被实例化即不能创建抽象类的对象。但可以声明抽象类的指针和引用。抽象类用于定义通用接口和行为要求派生类提供具体的实现。
class Shape {
public:virtual void draw() 0; // 纯虚函数
};class Circle : public Shape {
public:void draw() override {cout Drawing a circle endl;}
};class Rectangle : public Shape {
public:void draw() override {cout Drawing a rectangle endl;}
};3.完整案例解析
#include iostream
using namespace std;
//纯虚函数和抽象类class Base {
public://纯虚函数//只要有一个纯虚函数这个类称为抽象类//抽象类特点//1.抽象类不能实例化对象//2.抽象类的子类 必须要重写父类中的纯虚函数否则也属于抽象类virtual void func() 0;};class Son:public Base {
public:virtual void func() {cout Son::func() endl;}};void test01() {//Base b; // 报错不能实例化抽象类//Son s;子类必须重写父类中的纯虚函数否则无法实例化对象Base *p new Son; // 指针指向子类对象可以调用子类中的方法p-func(); // 调用子类中的方法}int main() {test01();return 0;
}