c 自定义实现string类 clear_CC++语言15|类的继承和派生实现代码重用、扩充

在C++中,继承是一个对象自动获取其父对象的所有属性和行为的过程。通过继承,您可以重用,扩展或修改在其他类中定义的属性和行为。通过继承,可以实现函数重写以及多态。

在C++中,继承另一个类的成员的类称为派生类,其成员被继承的类称为基类。 派生类是基类的子类。

继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是动物,等等。

C++最强大的功能之一就是派生类的使用。通过其类提供类和对象的更一般的属性和行为,通过派生类来逐步特殊化、具体化,体现出一种层次化的关系。既能达到代码重用,还可添加成员或重写成员函数。继承一般有三种形式1) 实现继承:派生类使用基类的属性和方法而无需额外编码;2) 可视继承:子窗体使用父窗体的外观和实现代码;3) 接口继承:仅使用属性和方法,实现滞后到子类实现;

如C++的输入输出流类就能会很地体现这种继承和派生的层次关系:

7eda092f18098ea7eefc4fc73d3414d6.png

定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名,形式如下:

class derived-class: access-specifier base-class

其中,访问修饰符 access-specifier可以是 public、protected 或 private 其中的一个,base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier,则默认为 private。

实例:

#include using namespace std;// 基类class Shape{public:void setWidth(int w){width = w;}void setHeight(int h){height = h;}protected:int width;int height;};// 派生类class Rectangle: public Shape{public:int getArea(){return (width * height);}};int main(void){Rectangle Rect;Rect.setWidth(5);Rect.setHeight(7);// 输出对象的面积cout << "Total area: " << Rect.getArea() << endl;system("pause");return 0;}//输出:Total area: 35

1 访问控制和继承

派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。

我们可以根据访问权限总结出不同的访问类型,如下所示:

75ddb93edefbfd343b1d8ae981aa30f0.png

2 派生类不能继承的函数成员

一个派生类继承了所有的基类方法,但下列情况除外:

  • 基类的构造函数、析构函数和拷贝构造函数。
  • 基类的重载运算符。
  • 基类的友元函数。

用派生的方法定义一个派生类时,派生类对象中的基类部分必须在构造函数的初始化列表中调用基类的构造函数完成,如:

#include

#include

//代码清单12-11 派生类定义实例car派生taxi

class car {

char no[10];

char owner[10];

char type[20];

public:

car(char *s1, char *s2, char *s3)

{

strcpy(no, s1);

strcpy(owner, s2);

strcpy(type, s3);

}

void modifyNo(char *s) {strcpy(no, s); }

void modifyOwner(char *s) {strcpy(owner, s); }

const char *getNo() const { return no; }

const char *getOwner() const {return owner; }

const char *getType() const { return type; }

};

class taxi : public car {

int seat;

double price;

public:

taxi(char *s1, char *s2, char *s3, int s, double p):car(s1,s2,s3)

{seat = s; price = p; }

double operator() (int start, int end)

{ return price *(end-start); }

int getSeat() const {return seat; }

double getPrice() const { return price; }

};

int main()

{

car car1("沪A01100

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

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

相关文章

超几何分布_常见概率分布

离散分布退化分布 若r.v. 只取常数值c&#xff0c;即 ,这时分布函数为&#xff1a; 把这种分布称为退化分布或者单点分布。伯努利分布 在一次实验中&#xff0c;事件A出现的概率为 ,不出现的概率为 ,若用 记事件A出现的次数&#xff0c;则 仅取值0或1&#xff0c;相应的…

struts学习

Structs2配置文件概述&#xff1a; <constant name"" value""></constant>详解&#xff1a;&#xff08;两个看不见的value都是设置true/false&#xff09; package的相关使用&#xff1a; &#xff08;name是包名。action相当于以前的servl…

里怎么做页眉页脚_这年头县城里在家做的电商利润怎么样

这年头县城里在家做的电商利润怎么样 mcfg6ek这年头县城里在家做的电商利润怎么样 通过上面的信息大家是否已经对多用户商城有什么优势有所了解了呢&#xff0c;如果还想了解更多多用户商城的信息&#xff0c;站进行查看咨询哦。店系统怎么进行推广。店系统的推广方式介绍我们都…

计算机如果算积分排名,超级电脑预测英超积分榜:蓝军守住第4 曼联无缘欧冠...

还有6天的时间&#xff0c;2019-20赛季的英超联赛就要重启了。虽然冠军的悬念已经不大&#xff0c;但欧冠席位以及降级名额仍有很大的变数&#xff0c;这让外界仍无比期待接下来的比赛。今日&#xff0c;超级计算机对剩余的比赛做了预测&#xff0c;并算出了最终的积分榜&#…

环形队列出队的元素怎么输出出来_队列:队列在线程池等有限资源池中的应用...

我们知道&#xff0c;CPU资源是有限的&#xff0c;任务的处理速度与线程个数并不是线性正相关的。相反&#xff0c;过多的线程反而会导致CPU频繁切换&#xff0c;处理性能下降。所以&#xff0c;线程池的大小一般都是综合考虑要处理任务的特点和硬件环境&#xff0c;来事先设置…

英语答题测试的软件叫什么,英语做题软件哪个好 有答案解析的英语做题软件分享...

对于一些即将参与重要英语考试的考生来说&#xff0c;每天刷题练习肯定是不可避免的事情&#xff0c;但如果你想要更高效的刷题&#xff0c;让自己的刷题时间更有价值&#xff0c;那就来看看推荐给你的这些英语做题软件。类型&#xff1a;学习 语言&#xff1a;简体中文星级&am…

raid卡组不同raid_RAID磁盘阵列是如何运作的?

本文编辑&#xff1a;意哥专业指导&#xff1a;葵芳一凡 RAID是英文Redundant Array of Independent Disks的缩写&#xff0c;中文简称为独立冗余磁盘阵列。简单的说&#xff0c;RAID是一种把多块独立的硬盘&#xff08;物理硬盘&#xff09;按不同的方式组合起来形成一个硬盘组…

java 析构函数_C++虚函数

码字不易&#xff0c;欢迎给个赞&#xff01;C虚函数是多态性实现的重要方式&#xff0c;当某个虚函数通过指针或者引用调用时&#xff0c;编译器产生的代码直到运行时才能确定到底调用哪个版本的函数。被调用的函数是与绑定到指针或者引用上的对象的动态类型相匹配的那个。因此…

象过河软件试用版_比肩许银川蒋川王天一,象棋软件下出神一样的残局,看完叹为观止...

古语有云&#xff0c;残局&#xff0c;是一盘棋的命脉所在。这对于现代象棋而言&#xff0c;也是如此&#xff0c;君不见&#xff0c;许银川有着鬼魅残功&#xff0c;蒋川有着魔衣血刀&#xff0c;王天一有着天外飞仙&#xff0c;都是一等一的残棋神器。而被誉为棋界战斗力最为…

python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)

一、乱码问题描述 经常在爬虫或者一些操作的时候&#xff0c;经常会出现中文乱码等问题&#xff0c;如下原因是源网页编码和爬取下来后的编码格式不一致 二、利用encode与decode解决乱码问题 字符串在Python内部的表示是unicode编码&#xff0c;在做编码转换时&#xff0c;通常…

北方股份无人驾驶矿卡_踏歌智行完成B轮2亿元融资,无人驾驶矿山赛道爆发在即...

作者 / 李笠10 月 30 日&#xff0c;矿山无人驾驶运输的领军企业踏歌智行完成了 2 亿元 B 轮融资。这是无人驾驶矿山赛道迄今为止最大的一笔融资。据悉&#xff0c;本轮融资由前海母基金和宝通投资共同领投&#xff0c;清研资本、蓝焱资本等跟投。这也是踏歌智行继 2019 年连续…

计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述

原标题&#xff1a;计算机视觉方向简介 | 人脸识别中的活体检测算法综述本文转载自“SIGAI人工智能学习与实践平台”(ID&#xff1a;SIGAICN)导言1. 什么是活体检测&#xff1f;判断捕捉到的人脸是真实人脸&#xff0c;还是伪造的人脸攻击(如&#xff1a;彩色纸张打印人脸图&am…

黑客们的故事(连载三) 因为好奇

上期说到的肯和丹尼斯在黑客文化中的高知名度&#xff0c;不仅是因为他们开发出的操作系统和编程语言&#xff0c;更在于他们行为所体现出的价值观&#xff1a;求知、探索&#xff0c;以及追求极致。这些是黑客精神的精髓——虽然黑客们贯彻这些精神时的方式并不总是合理合法的…

css3禅密花园叫什么名字_新生儿起名:2021元旦出生男孩叫什么名字

2021年元旦节又是新的一年开始&#xff0c;在这辞旧迎新的日子里出生的男孩&#xff0c;都带有极好的寓意兆头&#xff0c;父母们如果能顺借此时机&#xff0c;取一个具有出生纪念意义的名字&#xff0c;那必然能让男孩的成长有着不同与众的历程。2021元旦出生男孩叫什么名字比…

10个让人很舒服的沟通技巧

转载于:https://www.cnblogs.com/yymn/p/4605237.html

idea将远程代码更新合并到本地_idea 本地调试远程服务器代码

基本原理本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信&#xff0c;传递调试指令和调试信息。 被调试程序的远程虚拟机&#xff1a;作为 Debug 服务端&#xff0c;监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。 调试程序的本地虚拟机&#xff…

安卓手机网页 字体垂直方向对齐_初学Excel办公软件字体对齐调整

今天我们依然讲解Excel办公软件的字体对齐调整&#xff0c;上一节我们讲过在菜单栏的上方就可以看到十个功能&#xff0c;然后我们根据这十个功能的调解我们所需要的文字对齐&#xff0c;或者是居中对齐&#xff0c;顶端对齐等等。还有另外一种操作方法&#xff0c;也是方便快捷…

英伟达_如何超越英伟达?

从AI热潮中率先获益的英伟达&#xff0c;其GPU参数和性能频繁出现在不少AI芯片发布会的对比图中。这是在缺乏AI芯片衡量的标准时&#xff0c;新的AI芯片证明自己实力的不错方式。不过&#xff0c;声称性能超越英伟达GPU的创新AI芯片不少&#xff0c;但想要超越英伟达非常困难。…

在struts2中push方法的使用_【干货】网版印刷中水墨使用注意事项及助剂使用方法...

导LEAD语在印刷生产中&#xff0c;水性油墨的黏度、干燥速度和PH值等等都会直接影响印刷质量&#xff0c;那么具体到网版印刷中&#xff0c;在使用水性油墨时应该注意哪些问题呢&#xff1f;常用的印刷助剂都有哪些特点和使用方法&#xff1f;编辑&#xff1a;华印纸箱彩盒 小张…

限定概率抽奖_守护星已点亮,内测皮肤得到没?从天美抽奖概率分析:地址什么梗...

声明&#xff1a;原创文章&#xff0c;禁止抄袭&#xff0c;违者必究&#xff01;大家好&#xff0c;我是你们的小抖。本次五五开黑节最引人注意的活动&#xff0c;当然不是超云龙胆新皮肤了。小抖觉得大家应该与我想的一样&#xff1a;内测皮肤。小抖点亮了所有守护星&#xf…