接口(抽象类)

接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的 virtual void GetStu() = 0; 。设计抽象类(通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为接口使用。如果试图实例化一个抽象类的对象,会导致编译错误。因此,如果一个ABC 的子类需要被实例化,则必须实现每个虚函数,这也意味着 C++ 支持使用 ABC 声明接口。如果没有在派生类中重写纯虚函数,就尝试实例化该类的对象,会导致编译错误。可用于实例化对象的类被称为具体类

 1 #include <iostream>
 2 using namespace std;
 3 class Student
 4 {
 5 public:
 6     Student(int cAchie, int cId)
 7     {
 8         achie = cAchie;
 9         id = cId;
10     }
11     virtual void GetStu() = 0;  //纯虚函数
12 protected:
13     int achie;
14     int id;
15 };
16 
17 class GetAchie : public Student
18 {
19 public:
20     GetAchie(int cAchie, int cId) : Student(cAchie, cId) {};    //显式继承构造函数
21     void GetStu()
22     {
23         cout << achie << endl;
24     }
25 };
26 
27 class GetId : public Student
28 {
29 public:
30     using Student::Student;     //隐式继承构造函数
31     void GetStu()
32     {
33         cout << id << endl;
34     }
35 };
36 
37 int main()
38 {
39     GetAchie ga(97,24615);
40     ga.GetStu();
41     GetId gd(97, 24615);
42     gd.GetStu();
43     system("pause");
44     return 0;
45 }

结果为: 97 24615 

原文地址:https://www.cnblogs.com/xiaodangxiansheng/p/11002376.html