linux系统中实现C++中继承和重载的方法

简介: linux系统中实现C++中继承和重载的方法

      大家好,今天主要和大家聊一聊,如何实现C++中继承和重载的功能。

                         

 

第一:C++中的继承功能

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

    当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。在 Qt 里大量的使用 了这种特性,当 Qt 里的类不满足自己的要求时,我们可以重写这个类,就是通过继承需要重写的类,来实现自己的类的功能。

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

2. 保护继承(protected): 当一个类派生继承保护基类时,基类的公有和保护成员将成为派

生类的保护成员。

3. 私有继承(private):当一个类派生继承私有基类时,基类的公有和保护成员将成为派生类

的私有成员。

#include <iostream>
#include <string>
 using namespace std;
/*动物类,抽象出下面两种属性,
*颜色和体重,是每种动物都具有的属性
*/
class Animal
{
   public:
 /* 颜色成员变量 */
   string color;
 /* 体重成员变量 */
    int weight;
};
/*让狗类继承这个动物类,并在狗类里写自己的属性。
*狗类拥有自己的属性 name,age,run()方法,同时也继承了
*动物类的 color 和 weight 的属性
*/
class Dog : public Animal
 {
   public:
   string name;
   int age;
   void run();
};
 int main()
 {
   Dog dog;
   dog.name = "旺财";
   dog.age = 2;
   dog.color = "黑色";
   dog.weight = 120;
   cout<<"狗的名字叫:"<<dog.name<<endl;
   cout<<"狗的年龄是:"<<dog.age<<endl;
   cout<<"狗的毛发颜色是:"<<dog.color<<endl;
   cout<<"狗的体重是:"<<dog.weight<<endl;
   return 0;
}

Animal 作为基类,Dog 作为派生类。Dog 继承了 Animal 类。访问修饰符为 public (公有继承)。

第二:C++中的函数重载

      C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载运算符重载

       在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。我们不能仅通过返回类型的不同来重载函数。在 Qt 源码里,运用了大量的函数重载,所以我们是有必要学习一下什么是函数重载。不仅在 C++,在其他语言的里,都能看见函数重载。因为需要不同,所以有重载各种各样的函数。下面通过一个小实例来简单说明一下函数重载的用法。我们还是以狗类为说明,现在假设 有个需求。我们需要打印狗的体重,分别以整数记录旺财的体重和小数记录旺财的体重,同时以整数打印和小数打印旺财的体重。那么我们可以通过函数重载的方法实现这个简单的功能。

#include <iostream>
#include <string>
 using namespace std;
 class Dog
 {
 public:
 string name;
 void getWeight(int weight) {
 cout<<name<<"的体重是:"<<weight<<"kG"<<endl;
}
 void getWeight(double weight) {
 cout<<name<<"的体重是:"<<weight<<"kG"<<endl;
}
};
int main()
{
 Dog dog;
 dog.name = "旺财";
 dog.getWeight(10);
 dog.getWeight(10.5);
 return 0;
}

分析:以相同的函数名getWeight,不同的参数类型double weight,这样构成了函数重载。

第三:C++中运算符重载  

#include <iostream>
#include <string>
using namespace std;
class Dog
{
    public:
    int weight;
    Dog operator+(const Dog &d) {
    Dog dog;
    dog.weight = this->weight + d.weight;
    return dog;
    }
};
int main()
{
    Dog dog1;
    Dog dog2;
    Dog dog3;
    dog1.weight = 10;
    dog2.weight = 20;
    dog3 = dog1 + dog2;
    cout<<"第三只狗的体重是:"<<dog3.weight<<endl;
    return 0;
}

分析:重装"+"运算符,把Dog对象作为传递,然后返回dog对象。

目录
相关文章
|
5天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
22 5
linux系统服务二!
|
5天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
23 3
linux系统服务!!!
|
5天前
|
网络协议 Linux
linux系统重要文件目录
本文介绍了Linux系统中的重要目录及其历史背景,包括根目录、/usr、/etc、/var/log和/proc等目录的结构和功能。其中,/etc目录下包含了许多关键配置文件,如网卡配置、DNS解析、主机名设置等。文章还详细解释了各目录和文件的作用,帮助读者更好地理解和管理Linux系统。
20 2
|
7天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
8天前
|
Linux Shell 数据库
文件查找是Linux用户日常工作的重要技能介绍了几种不常见的文件查找方法
文件查找是Linux用户日常工作的重要技能。本文介绍了几种不常见的文件查找方法,包括使用`find`和`column`组合、`locate`和`mlocate`快速查找、编写Shell脚本、使用现代工具`fd`、结合`grep`搜索文件内容,以及图形界面工具如`Gnome Search Tool`和`Albert`。这些方法能显著提升文件查找的效率和准确性。
28 2
|
10天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
55 3
|
11天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
17天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
119 5
|
16天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
51 4
|
3天前
|
缓存 监控 Linux