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

003:C++继承

时间:2023-02-12 18:01:42浏览次数:41  
标签:运算符 继承 派生类 C++ 003 基类 重载

1:C++多继承

 1:基类和派生类

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

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

 

 2:继承类型

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

    我们几乎不使用 protected 或 private 继承,

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

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

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

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

 

 3:多继承

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

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

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

// 派生类
class Rectangle: public Shape, public PaintCost
{
   public:
      int getArea()
      { 
         return (width * height); 
      }
};

 

2: 重载

C++ 重载运算符和重载函数:函数名字相同,参数个数和类型不通。

 1:重载

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

     重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。

     当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。

   

void print(int i) {
        cout << "整数为: " << i << endl;
      }
 
      void print(double  f) {
        cout << "浮点数为: " << f << endl;
      }
 
      void print(char c[]) {
        cout << "字符串为: " << c << endl;
      }

 

 2:C++ 中的运算符重载

     您可以重定义或重载大部分 C++ 内置的运算符。这样,您就能使用自定义类型的运算符。

     重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。

     Box operator+(const Box&);

标签:运算符,继承,派生类,C++,003,基类,重载
From: https://www.cnblogs.com/zyzmlc/p/17114349.html

相关文章

  • 002:C++类和对象
    1:****范围解析运算符::  类的内部声明函数是内敛函数(inline),  类的外边定义函数,需要在方法名字前面使用类名和范围解析运算费::  调用函数使用.   ......
  • C++右值引用与移动语义
    一文看懂C++右值引用和移动语义目录背景什么是右值引用为什么需要右值引用移动构造move的原理move的应用场景右值引用注意事项总结背景C++11......
  • C++中static关键字的作用
    static是什么在最开始C中引入了static关键字可以用于修饰变量和函数,后来由于C++引入了class的概念,现在static可以修饰的对象分为以下5种:成员变量,成员函数,普通函数,局部变......
  • C++ | 引用
    01.引用概述1.1创建引用变量引用是已定义的变量的别名(另一个名称)。inta;int&b=a;//将b作为a变量的别名C和C++使用&符号来指示变量的地址。C++给&符号赋予了另......
  • 【数据结构与算法】图论算法(C++实现)
    一些基本概念图一个图\(G=(V,E)\)由顶点集V和边集E组成。每一条边就是一副顶点对\((u,v)\),其中\(u,v\inV\)。顶点u和顶点v邻接当且仅当\((u,v)\inE\)......
  • C/C++工业数据分析与文件信息管理系统[2023-02-12]
    C/C++工业数据分析与文件信息管理系统[2023-02-12]程序设计基础A课程设计工业数据分析与文件信息管理系统题目背景智能制造是以工业生产数据分析、自动化技术为基础,具......
  • Java的单继承与多实现
    Java和C、C++不同,C和C++允许多继承多实现,但是Java不能:Java是单继承的(extends),所谓单继承是指当前子类只能有一个直接的父类;在多继承的情况下如果多个父类有相同的方法那么......
  • C++中的默认初始化
    当没有通过初始化器构造一个对象时,那么将会执行默认初始化。语法Tobject;newT;默认初始化出现在以下几种情况中当一个自动,静态,或者线程存储周期的变量声明......
  • C++中explicit的用法
    C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色。1是个构造;2是个默认且隐含的类型转换操作符。所以,有时候在我们......
  • C++匿名函数
    #include<iostream>std::stringaaa="111";intmain(){//[]称为lambda捕获列表,它的含义为:告诉编译器需要在匿名函数内部使用外部的变量。捕获列表中的内容......