• 接口(抽象类)


    接口描述了类的行为和功能,而不需要完成类的特定实现。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 

  • 相关阅读:
    Android 8.0 adb shell dumpsys activity activities | findstr mFocusedActivity 获取当前的 activity 显示空的
    spring-in-action_day01
    spring-in-action_day02
    spring-in-action-day04-配置属性 @ConfigurationProperties
    springmvc接收参数
    spring中Utils工具类注入问题
    Eclipse Push出现rejected
    Eclpis-cannot open git-receive-pack
    IO
    LinkedHashmap简要说明
  • 原文地址:https://www.cnblogs.com/xiaodangxiansheng/p/11002376.html
Copyright © 2020-2023  润新知