C++:37---继承概念、继承种类

这篇文章不详细分析继承和不同继承关系下的特点。

我将在后边几篇文章里专门针对继承关系来做分析。

一、基类与派生类的概念

  • 基类(父类):在继承关系中处于上层的类

  • 派生类(子类):在继承关系中处于下层的类

class A;class B;class C:public A  //C为A的子类,A为C的父类{};class D:public A,public B  //D为A和B的子类,A和B均为D的父类{};

二、类派生列表

  • 派生类通过派生类列表来指出其从哪个(哪些)基类继承而来

类派生列表的使用规则:

  • ①派生列表不能出现在类的声明时,只能在定义时,原因如下:

    • 一条声明语句的目的是让程序知晓某个名字的存在已经改名字表示一个什么样的实体(如一个类、一个函数、或一个变量等)

class A;class B;//class B:public A;  错误class A{};class B:public A{}; //正确
  • ②要继承的基类必须在本类之前定义而非声明,原因如下:

    • 派生类必须知道其从基类继承而来的成员是什么,如果基类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:41---覆盖和隐藏

覆盖(重写) 概念: 基类的虚函数,如果派生类有相同的函数,则子类的方法覆盖了父类的方法 隐藏 概念: 当子类定义出的“成员变量、方法”与父类的重名时,父类的会被隐藏重点:对于函数,基类定义了一些列的重载函数,在派生类中只要有一个同名的函数(即使参数列表不…

leetcode179. 最大数

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。 思路:贪心,对于…

C++:39---继承中构造函数、析构函数的关系

一、继承中构造函数的关系 如果父类没有构造函数,则子类初始化时不需要构造父类如果父类有构造函数,则子类初始化自己的构造函数时,要先初始化父类的构造函数基类的构造函数必须在派生类的构造函数初始化列表来进行初始化总结:在构造自己(子类)之前,需要先构造父类演示案…

Java应用服务器Tomcat

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML…

C++:38---final关键字和禁止类继承

一、final关键字 C++新标准规定:如果我们定义的类不希望被其他类继承,那么可以在类名后加一个final关键字但是final类仍然可以继承其他类。实际上C++11的关键字final有两个用途。第一,它阻止了从类继承;第二,阻止一个虚函数的重载。二、演示案例 class A final{}; class B…

C++:48---纯虚函数

一、纯虚函数 纯虚函数一种特殊的虚函数,在许多情况下在基类中不对虚函数做出有意义的实现,而是把它定义为纯虚函数,它的实现由派生类实现格式:virtual 返回类型 函数名(参数列表)=0;注意事项 纯虚函数不能实现,没有函数体,其实现由子类去实现各自的功能版本纯虚函数可以…

leetcode389. 找不同

给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例: 输入: s "abcd" t "abcde" 输出: e 解释: …

C++:47---绝不重新定义继承而来的缺省参数值

一、静态类型、动态类型 静态类型:在被声明时所采用的的类型动态类型:目前所知对象的类型演示案例 下面是一个继承体系class Shape {public:enum ShapeColor { Red, Green, Blue };virtual void draw(ShapeColor color = Red)const = 0;};class Rectangle :public Shape {pub…

C++:44---关键字virtual、override、final

一、虚函数 概念:在函数前面加virtual,就是虚函数虚函数的一些概念: 只有成员函数才可定义为虚函数,友元/全局/static/构造函数都不可以虚函数需要在函数名前加上关键字virtual成员函数如果不是虚函数,其解析过程发生在编译时而非运行时派生类可以不覆盖(重写)它继承的虚…

leetcode409. 最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。 注意: 假设字符串的长度不会超过 1010。 示例 1: 输入: "abccccdd" 输…

C++:46---绝不重新定义继承而来的non-virtual函数

一、看一个隐藏non-virtual函数的例子 假设class D以public的方式继承于class B,代码如下:class B {public:void mf();};class D :public B {};int main(){D x;B *pB = &x;pB->mf(); //调用B::mf()D *pD = &x;pD->mf(); //调用D::mf()return 0;}二、静态绑…

C++:45---多态

一、多态介绍 面向对象的核心思想是多态性,其含义是“多种形式”概念:在子类覆盖了父类函数的情况下,用父类的指针(或引用)调用子类对象,或者通过父类指针调用覆盖函数的时候(动态绑定),实际上调用的是子类的覆盖版本,这种现象叫做多态注意事项:只有用父类的指针(或引用…

leetcode415. 字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和num2 都不包含任何前导零。 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为…

C++:53---菱形继承、虚继承

一、菱形继承 在介绍虚继承之前介绍一下菱形继承概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承菱形继承的缺点:数据冗余:在D中会保存两份A的内容访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访…

C++:49---继承中的友元

一、友元在继承中的关系我们在友元的文章中介绍过,友元关系不能继承。(1)友元关系不存在传递性,即每个类负责控制自己的友元类或者友元函数;(2)友元关系是单向的,不具有交换性。若类…

leetcode383. 赎金信

给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。 (题目说明:为了不暴露赎金信字迹,要从…

C++:52---多重继承

一、多重继承概念 多重继承是指:从多个直接基类而产生派生类的能力例如:class ZooAnimal {}; //动物class Endangered {}; //濒临灭绝的动物class Bear :public ZooAnimal {}; //熊 //多重继承 class Panda :public Bear, public Endangered {}; //熊猫二、多重继承的语法 继…

关于jsp页面显示的时间格式和Oracle数据库中的格式不一样的问题

今天我遇到一个问题:就是数据库存的时间格式是:2013-06-28 11-00-17 ,但是通过查询在jsp页面上显示出来是:2013-06-28 11-00-17.0 就是多了一个.0,之后通过查资料解决了这个问题,现在写出来和大家分享一下…

C++:50---虚析构函数

一、引入 如果通过一个基类指针申请一个派生类对象,那么在通过这个指针释放对象的时候,要求基类的虚函数是virtual的 。二、虚析构函数 使用方法和规则与虚函数一样格式要求:虚析构函数要求基类与派生类中的名称不一致只要基类的析构函数是虚函数,就能确保我们在释放指针时…

C++:51---继承中的构造函数、析构函数、拷贝控制一系列规则

一、继承中的构造函数 根据构造函数的执行流程我们知道:派生类定义时,先执行基类的构造函数,再执行派生类的构造函数拷贝构造函数与上面是相同的原理二、继承中的析构函数 根据析构函数的执行流程我们知道:派生类释放时,先执行派生类的析构函数,再执行基类的析构函数二、…