C++继承

C++继承教程

继承是 C++ 面向对象编程中一个非常重要的概念, 继承允许我们依据一个 来定义另一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。

当创建一个类时,您不需要重新编写新的 数据成员成员函数,只需指定新建的类继承了一个已有的类的成员即可,这个已有的类称为基类,新建的类称为派生类。

继承优缺点

优点

  • 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。
  • 提高代码的重用性。
  • 子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞” 是说子拥有父的 “种”,“世界上没有两片完全相同的叶子” 是指明子与父的不同。
  • 提高代码的可扩展性,实现父类的方法就可以 “为所欲为”了,君不见很多开源框架的扩展接口都是通过继承父类来完成的。
  • 提高产品或项目的开放性。

缺点

  • 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法。
  • 降低代码的灵活性。子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束。
  • 增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来非常糟糕的结果——大段的代码需要重构。

继承使用场景

  • 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,这样不但会减少代码量,而且新类会拥有基类的所有功能。
  • 当你需要创建多个类,它们拥有很多相似的成员变量或成员函数时,也可以使用继承。可以将这些类的共同成员提取出来,定义为基类,然后从基类继承,既可以节省代码,也方便后续修改成员。

C++继承详解

语法

class derived-class: access-specifier base-class

参数

参数 描述
derived-class 派生类,即继承自 base-class 创建的新类。
access-specifier 继承访问修饰符。
base-class 基类,即要被继承的类。

说明

我们创建了一个新类 derived-class,其继承自 base-class。

案例

C++类继承

C++ 类继承

#include <iostream> #include <cstring> using namespace std; //人类 class Person { public: Person() { } Person(string name, int age) { this->name = name; this->age = age; } void info() { cout << "Person name = " << this->name << " age = " << this->age << endl; } public: string name; int age; }; //学生类 class Student : public Person { public: Student(string name, int age, int score) { this->name = name; this->age = age; this->score = score; } private: int score; }; int main(void) { cout << "嗨客网(www.haicoder.net)\n" << endl; Student stu("HaiCoder", 109, 100); stu.info(); return 0; }

程序运行后,控制台输出如下:

01_C继承.png

我们首先,定义了一个基类 Person,接着,我们定义了一个派生类 Student,其继承自基类 Person,我们看到,派生类 Student 里面我们没有定义 info 函数。

但最后,在 main 函数里面,我们可以直接调用 info 函数,这是因为,派生类 Student 从基类 Person 里面继承了 info 方法。

C++继承总结

继承允许我们依据一个类来定义另一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。

当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可,这个已有的类称为基类,新建的类称为派生类。