首页 > 编程语言 >C++ 继承

C++ 继承

时间:2023-08-20 16:33:23浏览次数:33  
标签:继承 成员 基类 C++ 公有 派生类 public

继承

一个类可以继承另一个类,避免了代码复写。被继承的类被叫做基类,继承的类叫做派生类。(或者说是父类和子类)

继承类型

当一个类派生自基类,该基类可以被继承为 public、protectedprivate 几种类型。继承类型是通过上面讲解的访问修饰符 access-specifier 来指定的。

我们几乎不使用 protectedprivate 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则:

  • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有保护成员来访问。
  • 保护继承(protected): 当一个类派生自保护基类时,基类的公有保护成员将成为派生类的保护成员。
  • 私有继承(private):当一个类派生自私有基类时,基类的公有保护成员将成为派生类的私有成员。

多继承

多继承即一个子类可以有多个父类,它继承了多个父类的特性。

C++ 类可以从多个类继承成员,语法如下:

class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};

例子

#include <iostream>

using namespace std;

class Entity{
public:
    double x, y;
    void move(double xa, double ya){
        x += xa;
        y += ya;
    }
};

class Player:public Entity{
private:
     const char * name;
public:
    Player(const char * _name){
        name = _name;
    }
    void getName(){
        cout << name << endl;
    }
};

int main()
{
    Player player("guiwow");
    player.getName();
    player.move(1.0,2.0); // 没有报错, Player继承了Entity的move函数
    return 0;
}

标签:继承,成员,基类,C++,公有,派生类,public
From: https://www.cnblogs.com/orzmiku/p/17644202.html

相关文章

  • C++ 构造函数与析构函数
    构造函数和析构函数构造函数构造函数会在实例化对象的时候执行,可以在实例化时传入参数。构造函数没有返回值。不需要声明返回值。构造函数的函数名与类名保持一致。//classname:PlayerPlayer(intxa=0,intya=0){//构造函数,传入初始坐标进行初始化......
  • 面向对象--继承
    继承概述在面向对象里面,继承是对类进一步抽象的过程。当多个类中存在相同属性和行为时,将这些相同属性和行为抽取到单独一个类中,这个类就是父类,子类无需再定义这些属性和行为,只要继承父类即可。其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者*基类*。继承概念......
  • C++ 变量初始化总结
    堆空间,new操作初始化1、对于有自己写构造函数的类,不论类型名后面有没有括号()或者数组[],都用构造函数进行初始化,如果构造函数delete,则编译报错;2、如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,3、而加了括号()的new会在分配内存的同时初始化为0。栈空间......
  • c++基础入门
    1.安装g++编译器是编译C++代码使用的编译器,不要使用gcc了。在用户目录中单独创建一个文件夹存放下载后的3个安装文件,然后进入到目录中执行下面命令cd文件夹sudodpkg-i*.deb本地安装sudoapt-getinstallg++在线安装2.C++的语言特点及优势cwithclass(类)cplusplus大型......
  • 快速理解什么是 JavaScript 的继承
    其实JavaScript中的继承,就是指的是一种机制,它允许一个对象(子对象)获取另一个对象(父对象)的属性和方法。这样的话子对象可以重用父对象的代码,同时还可以添加自己的特定功能。JavaScript是使用原型继承的方式来实现对象之间的继承关系。首先你肯定得知道一些基本概念:对象:在JavaScrip......
  • c++算法之动态规划:01背包
    什么是动态规划?动态规划算法(dynamicprograming),是一种由递推为基础的比贪心更稳定的一种优化策略,为运筹学的一部分。就是通过以递推为基础的手段非暴力求出最值。它的总体思想其实就是一个比较过程:假如你有一个数据,它的价值是x,代价为y,如果用动态规划就是和你不加这个元素和你加......
  • C/C++ 中 static 关键字解析
    局部静态变量的特点:全局数据区执行到函数内对象声明处首次初始化,若没有显示初始化,自动初始化为0,且只初始化一次始终驻留在全局区,直到程序结束,作用域为局部作用域,在函数或语句块内,生命周期到程序结束全局静态变量的特点:全局区在main函数执行前分配内存并初始化注意:......
  • JS的6中继承方式
    1.原型链继承将父类实例作为子类的原型,这种方式下,子类实例可以共享父类实例的属性和方法,但是无法向父类构造函数传递参数。  functionFun1(){    this.name='我是名称'    this.getName=()=>{      console.log(this.name)  ......
  • 使用WebAssembly实现高性能计算:C++和Rust的案例分析
    WebAssembly是一种新型的低级字节码格式,它可以在浏览器中运行高效的编译代码。使用WebAssembly可以实现高性能计算、游戏引擎等功能,对于需要大量计算的Web应用程序来说尤为重要。本文将介绍使用WebAssembly实现高性能计算的两个案例:C++和Rust。C++C++是一种高性能的编程语言,它......
  • C++入门:内联函数
    1.概念以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用。查看方式:1.在release模式下,查看编译器生成......