本文共 1527 字,大约阅读时间需要 5 分钟。
面向对象的抽象类用于表示现实世界的抽象概念,是一种只能定义类型,不能产生对象的类(不能实例化),只能被继承并被重写相关函数,直接特征是相关函数没有完整实现。
C++语言没有抽象类的概念,通过纯虚函数实现抽象类。纯虚函数是指定义原型的成员函数,C++中类如果存在纯虚函数就成为了抽象类。抽象类只能用作父类被继承,子类必须实现父类纯虚函数的具体功能,如果子类没实现纯虚函数,子类也为抽象类。抽象类不可以定义对象,但是可以定义指针,指针指向子类对象,当子类中实现了纯虚函数,可以实现多态。#includeusing namespace std;class Shape{public: virtual double getArea()const = 0;};class Rectangle : public Shape{public: Rectangle(double a = 0, double b = 0) { m_width = a; m_height = b; } double getArea()const { return m_width * m_height; }private: double m_width; double m_height;};class Circle : public Shape{public: Circle(double radius = 0) { m_radius = radius; } double getArea()const { return 3.1415926*m_radius*m_radius; }private: double m_radius;};int main(int argc, char *argv[]){ Shape* shape; Rectangle rect(3,4); shape = ▭ cout << "Rectangle' area is " << shape->getArea() << endl; Circle circle(4); shape = &circle; cout << "Circle' area is " << shape->getArea() << endl; return 0;}
C++中满足下列条件的类称为接口:
A、类中没有定义任何的成员变量B、所有的成员函数都是公有的C、所有的成员函数都是纯虚函数从以上条件可以知道,接口是一种特殊的抽象类。#includeusing namespace std;class Channel{public: virtual bool open() = 0; virtual void close() = 0; virtual bool send(char* buf, int len) = 0; virtual int receive(char* buf, int len) = 0;};int main(int argc, char *argv[]){ Channel* channel; return 0;}
转载于:https://blog.51cto.com/9291927/2148698