C++深入探究继承的概念与使用

C++深入探究继承的概念与使用

什么是继承?

继承是面向对象编程中的一个核心概念,它提供了一种在已有类的基础上构建新类的方式。继承是指子类从父类中继承成员变量和成员函数,并且可以在此基础上扩展出自己独有的属性和行为。继承有三种类型:公有继承、私有继承和保护继承。

公有继承

公有继承指的是子类从父类中继承了父类的公有成员和保护成员,并把这些成员都变成了子类的公有成员或保护成员。

例如,我们定义了一个基类 People,有一个公有成员函数 int getAge() 和一个私有成员变量 int age。现在定义一个子类 Student,它从 People 类中公有继承了 getAge 函数和 age 变量,我们可以在 Student 类中直接使用这些成员。

下面是示例代码:

class People {
public:
    int getAge() { return age; };
protected:
    int age;
};

class Student : public People {
public:
    void setScore(int s) { score = s; };
private:
    int score;
};

int main() {
    Student s;
    s.setScore(90);
    int age = s.getAge();
    return 0;
}

在上面的例子中,Student 类从 People 类中公有继承了 getAge 函数和 age 变量,并可以在 Student 类中使用这些成员。

私有继承

私有继承指的是子类从父类中继承了父类的公有成员和保护成员,并把这些成员都变成了子类的私有成员。

例如,我们仍然定义了一个基类 People,有一个公有成员函数 int getAge() 和一个私有成员变量 int age。现在定义一个子类 Student,它从 People 类中私有继承了 getAge 函数和 age 变量,我们可以在 Student 类内部使用这些成员,但是在 Student 类的外部是无法直接访问的。

下面是示例代码:

class People {
public:
    int getAge() { return age; };
protected:
    int age;
};

class Student : private People { // 私有继承
public:
    void setScore(int s) { score = s; };
    int getAge() { return People::getAge(); }; // 通过方法获取年龄
private:
    int score;
};

int main() {
    Student s;
    s.setScore(90);
    int age = s.getAge(); // 通过方法获取年龄
    return 0;
}

在上面的例子中,Student 类从 People 类中私有继承了 getAge 函数和 age 变量,并可以在 Student 类内部使用这些成员,但是在 Student 类的外部是无法直接访问的。

保护继承

保护继承与私有继承类似,不同的是从父类中继承的成员变量和成员函数变成了子类的保护成员。

例如,我们仍然定义了一个基类 People,有一个公有成员函数 int getAge() 和一个私有成员变量 int age。现在定义一个子类 Student,它从 People 类中保护继承了 getAge 函数和 age 变量,我们可以在 Student 类内部使用这些成员,也可以在子类的派生类中使用这些成员。

下面是示例代码:

class People {
public:
    int getAge() { return age; };
protected:
    int age;
};

class Student : protected People { // 保护继承
public:
    void setScore(int s) { score = s; };
    int getAge() { return People::getAge(); }; // 通过方法获取年龄
private:
    int score;
};

class Graduate : public Student { // Graduate 是 Student 的派生类
public:
    void setDegree(char *d) { degree = d; };
    char *getDegree() { return degree; };
private:
    char *degree;
};

int main() {
    Graduate g;
    g.setScore(90);
    g.setDegree("Master");
    int age = g.getAge(); // 通过方法获取年龄
    char *degree = g.getDegree();
    return 0;
}

在上面的例子中,Student 类从 People 类中保护继承了 getAge 函数和 age 变量,并可以在 Student 类内部使用这些成员,也可以在子类的派生类 Graduate 中使用这些成员。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++深入探究继承的概念与使用 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C if else if ladder

    C 语言中的 if else if 梯形结构又被称作 if else if ladder,它是多个条件语句的嵌套,可以用来实现复杂的条件判断。以下是 if else if ladder 的完整使用攻略: 梯形结构语法格式 if (condition1) { statement1; } else if (condition2) { statement2; } …

    C 2023年5月9日
    00
  • 详解C++ 拷贝构造函数和赋值运算符

    标题:详解C++ 拷贝构造函数和赋值运算符 什么是拷贝构造函数和赋值运算符 在C++中,每一个类都有一个默认的拷贝构造函数和赋值运算符。拷贝构造函数和赋值运算符的作用是对一个已经存在的对象进行复制。 拷贝构造函数用于创建一个新对象并将某个已经存在的对象的值赋给它。赋值运算符则在已有对象上操作。 拷贝构造函数 拷贝构造函数的定义格式如下: ClassName(…

    C 2023年5月22日
    00
  • 史上最贴心的 VS code C++ 环境配置超详细教程

    史上最贴心的 VS code C++ 环境配置超详细教程 1. 环境说明 本教程为在 Windows 10 操作系统下使用 VS code 编辑器配置 C++ 开发环境的详细教程。在配置过程中,我们使用 MinGW C++ 编译器和 CMake 构建工具。 2. 环境准备 安装 MinGW 编译器 访问 MinGW 官网,下载最新的 mingw-get-se…

    C 2023年5月23日
    00
  • 浅谈C语言中的强符号、弱符号、强引用和弱引用

    强符号、弱符号、强引用和弱引用 符号的概念 在C语言中,符号通常指的是变量、函数或者地址的名称。当我们使用这些名字的时候,编译器会将其转换成对应的地址或者值。但是,有些情况下我们并不希望这些名字被编译器处理,而是需要自己处理这些名字所代表的地址或者值,这就需要了解符号的相关概念。 符号的属性 在C语言中,符号有四个属性:强符号、弱符号、强引用和弱引用。这四个…

    C 2023年5月24日
    00
  • C语言中随机数rand()函数详解

    下面是关于C语言中随机数rand()函数的详解攻略: C语言中随机数rand()函数详解 简介 rand()函数是C语言标准库中的一个伪随机数生成函数,头文件为stdlib.h。它的作用是生成一个在0到RAND_MAX之间的随机整数,其中RAND_MAX是一个常量,其值至少为32767。要生成不同的随机数序列,可以先调用srand()函数设置不同的seed种…

    C 2023年5月22日
    00
  • 深入理解JavaScript系列(17):面向对象编程之概论详细介绍

    深入理解JavaScript系列(17):面向对象编程之概论详细介绍 前言 本文是深入理解JavaScript系列的第17篇,讲解面向对象编程的概念、理论和实践。在JavaScript中,我们可以使用面向对象编程(Object-Oriented Programming,OOP)的方式,构建更灵活、可维护性更好的代码。 什么是面向对象编程? 面向对象编程是一种…

    C 2023年5月22日
    00
  • Java中对list元素进行排序的方法详解

    首先我们需要知道,在Java中对List元素进行排序,我们通常会使用Collections类或者Stream API的sort()方法进行实现。 方法一:使用Collections类的sort()方法实现List元素排序 Collections类提供了sort()方法,在Java中使用该方法可以对List元素进行排序。该方法接收一个List类型的参数以及一个…

    C 2023年5月23日
    00
  • CI框架入门之MVC简单示例

    下面我来详细讲解“CI框架入门之MVC简单示例”的完整攻略。 什么是CI框架 CI(CodeIgniter)是一款轻量级的 PHP 框架,具有体积小、执行速度快、具备 MVC 模式、开发灵活性高等特点。CI基于MVC(Model-View-Controller)设计模式,通过将应用程序分成三个互动的部分来增强应用程序的灵活性和可扩展性。这三个部分为模型(Mo…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部