42 C++ - 继承概述

简介: 42 C++ - 继承概述

1. 为什么需要继承

网页类
class IndexPage{
public:
  //网页头部
  void Header(){
    cout << "网页头部!" << endl;
  }
  //网页左侧菜单
  void LeftNavigation(){
    cout << "左侧导航菜单!" << endl;
  }
  //网页主体部分
  void MainBody(){
    cout << "首页网页主题内容!" << endl;
  }
  //网页底部
  void Footer(){
    cout << "网页底部!" << endl;
  }
private:
  string mTitle; //网页标题
};
#if 0
//如果不使用继承,那么定义新闻页类,需要重新写一遍已经有的代码
class NewsPage{
public:
  //网页头部
  void Header(){
    cout << "网页头部!" << endl;
  }
  //网页左侧菜单
  void LeftNavigation(){
    cout << "左侧导航菜单!" << endl;
  }
  //网页主体部分
  void MainBody(){
    cout << "新闻网页主体内容!" << endl;
  }
  //网页底部
  void Footer(){
    cout << "网页底部!" << endl;
  }
private:
  string mTitle; //网页标题
};
void test(){
  NewsPage* newspage = new NewsPage;
  newspage->Header();
  newspage->MainBody();
  newspage->LeftNavigation();
  newspage->Footer();
}
#else
//使用继承,可以复用已有的代码,新闻业除了主体部分不一样,其他都是一样的
class NewsPage : public IndexPage{
public:
  //网页主体部分
  void MainBody(){
    cout << "新闻网页主主体内容!" << endl;
  }
};
void test(){
  NewsPage* newspage = new NewsPage;
  newspage->Header();
  newspage->MainBody();
  newspage->LeftNavigation();
  newspage->Footer();
}
#endif
int main(){
  test();
  return EXIT_SUCCESS;
}

2. 继承基本概念

c++最重要的特征是代码重用,通过继承机制可以利用已有的数据类型来定义新的数据类型,新的类不仅拥有旧类的成员,还拥有新定义的成员。

一个B类继承于A类,或称从类A派生类B。这样的话,类A成为基类(父类), 类B成为派生类(子类)。

派生类中的成员,包含两大部分:

  • 一类是从基类继承过来的,一类是自己增加的成员。
  • 从基类继承过过来的表现其共性,而新增的成员体现了其个性。

3. 派生类定义

派生类定义格式:

Class 派生类名 :  继承方式 基类名{
       //派生类新增的数据成员和成员函数
 }

三种继承方式:

  • public : 公有继承
  • private : 私有继承
  • protected : 保护继承

从继承源上分:

  • 单继承:指每个派生类只直接继承了一个基类的特征
  • 多继承:指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一个基类的特征
目录
相关文章
|
28天前
|
编译器 C++ 开发者
【C++】继承
C++中的继承是面向对象编程的核心特性之一,允许派生类继承基类的属性和方法,实现代码复用和类的层次结构。继承有三种类型:公有、私有和受保护继承,每种类型决定了派生类如何访问基类成员。此外,继承还涉及构造函数、析构函数、拷贝构造函数和赋值运算符的调用规则,以及解决多继承带来的二义性和数据冗余问题的虚拟继承。在设计类时,应谨慎选择继承和组合,以降低耦合度并提高代码的可维护性。
33 1
【C++】继承
|
5月前
|
编译器 C++
【C++】详解C++的继承
【C++】详解C++的继承
|
2月前
|
安全 程序员 编译器
【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则
【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则
90 11
|
2月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
63 1
|
2月前
|
C++
C++番外篇——虚拟继承解决数据冗余和二义性的原理
C++番外篇——虚拟继承解决数据冗余和二义性的原理
46 1
|
2月前
|
安全 编译器 程序员
C++的忠实粉丝-继承的热情(1)
C++的忠实粉丝-继承的热情(1)
21 0
|
2月前
|
编译器 C++
C++入门11——详解C++继承(菱形继承与虚拟继承)-2
C++入门11——详解C++继承(菱形继承与虚拟继承)-2
39 0
|
2月前
|
程序员 C++
C++入门11——详解C++继承(菱形继承与虚拟继承)-1
C++入门11——详解C++继承(菱形继承与虚拟继承)-1
41 0
|
3月前
|
C++
C++(二十)继承
本文介绍了C++中的继承特性,包括公有、保护和私有继承,并解释了虚继承的作用。通过示例展示了派生类如何从基类继承属性和方法,并保持自身的独特性。此外,还详细说明了派生类构造函数的语法格式及构造顺序,提供了具体的代码示例帮助理解。
|
3月前
|
C++
c++继承层次结构实践
这篇文章通过多个示例代码,讲解了C++中继承层次结构的实践应用,包括多态、抽象类引用、基类调用派生类函数,以及基类指针引用派生类对象的情况,并提供了相关的参考链接。