c++学习-继承
继承
- #include <iostream>
- using namespace std;
- class father{
- public:
- void getHeight(){cout<<height<<endl;}
- void getAge(){cout<<age<<endl;}
- protected:
- int height,age;
- };
- class son: public father{
- private:
- int weight;
- public:
- void getWeight(){cout<<weight<<endl;}
- void shwo()
- {
- cout<<this->weight<<endl;
- cout<<this->height<<endl;
- cout<<this->age<<endl;
- }
- };
- int main()
- {
- son one;
- one.shwo();
- }
子类对象赋值给父类
- #include <iostream>
- using namespace std;
- class father{
- public:
- int height;
- };
- class son: public father{
- public:
- int weight;
- };
- int main()
- {
- son a;
- father b;
- a.height=;
- b=a;//子类赋给父类
- }
父类引用指向子类对象
- #include <iostream>
- using namespace std;
- class father{
- public:
- int height;
- };
- class son: public father{
- public:
- int weight;
- };
- int main()
- {
- father *p;
- son jack;
- p=&jack; //父类引用指向子类对象 父类还可以作为子类的别名(虚函数)
- p->height=;
- cout<<jack.height<<endl;
- cout<<jack.weight<<endl;
- }
- #include <iostream>
- using namespace std;
- class father{
- protected:
- int height;
- };
- //私有派生用的不多,因为继承的成员都变成私有的了,不可以访问
- class son: private father{ //继承的父类的protected,public全部变成 private
- public:
- int weight;
- int getHeight()
- {
- return height;
- }
- void setHeight(int x)
- {
- this->height=x;
- }
- };
- int main()
- {
- son a ;
- a.setHeight();
- cout<<a.getHeight()<<endl;
- }
继承中构造函数的执行顺序(先构造基类,后构造子类, 先析构子类,在析构基类)
- #include <iostream>
- using namespace std;
- class father{
- private:
- int height;
- public:
- father(){cout<<"father construct"<<endl;}
- ~father(){cout<<"father destruct"<<endl;}
- };
- class son: public father{
- public:
- int weight;
- son(){cout<<"son construct"<<endl;}
- ~son(){cout<<"son destruct"<<endl;}
- };
- int main()
- {
- son a ;
- return ;
- }
多重继承,以 继承的顺序进行构造
向基类构造函数传递参数
- #include <iostream>
- using namespace std;
- class father{
- public:
- int height;
- int weight;
- public:
- father(int height, int weight ){
- this->height=height;
- this->weight=weight;
- cout<<"father construct"<<endl;
- }
- ~father(){cout<<"father destruct"<<endl;}
- };
- class son: public father{
- public:
- int age;
- son(int height,int weight,int age);
- ~son(){cout<<"son destruct"<<endl;}
- };
- son::son(int height, int weight, int age):father(height, weight)
- {
- this->age=age;
- cout<<"son construct"<<endl;
- }
- int main()
- {
- son a(,,) ;
- cout<<a.height<<endl;
- cout<<a.weight<<endl;
- cout<<a.age<<endl;
- return ;
- }
多继承的歧义(作用域操作符)
- #include <iostream>
- using namespace std;
- //class father{
- //
- //public:
- // int height;
- // int weight;
- //public:
- // father(int height, int weight ){
- // this->height=height;
- // this->weight=weight;
- // cout<<"father construct"<<endl;
- // }
- // ~father(){cout<<"father destruct"<<endl;}
- //
- //};
- //
- //class son: public father{
- //public:
- // int age;
- // son(int height,int weight,int age);
- // ~son(){cout<<"son destruct"<<endl;}
- //
- //};
- //
- //son::son(int height, int weight, int age):father(height, weight)
- //{
- // this->age=age;
- // cout<<"son construct"<<endl;
- //}
- class a{
- public:
- void hello(){cout<<"a hello"<<endl;}
- };
- class b{
- public:
- void hello(){cout<<"b hello"<<endl;}
- };
- class c : public a, public b{
- public:
- void hello(){cout<<"c hello"<<endl;}
- };
- int main()
- {
- c i;
- i.hello(); //本类的无需
- i.a::hello(); //作用域操作符,作用域分辨
- i.b::hello();
- return ;
- }
解决两异性(虚基类)
- #include <iostream>
- using namespace std;
- class common{
- public:
- void stand(){}
- };
- class a: virtual public common{
- public:
- void hello(){cout<<"a hello"<<endl;}
- };
- class b: virtual public common{
- public:
- void hello(){cout<<"b hello"<<endl;}
- };
- class c : public a, public b{
- public:
- void hello(){cout<<"c hello"<<endl;}
- };
- int main()
- {
- c i;
- i.stand();
- return ;
- }
c++学习-继承的更多相关文章
- JavaScript 核心学习——继承
本篇博文讲述如何在 JavaScript 中实现继承,以及原型与原型链的知识,在附录中将会讲述 JavaScript 面向对象的常见错误. ##原型与原型链在 JavaScript 中,使用类将会付出 ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- python学习-继承
# 继承# 你的是我的,我的还是我的 class Animal: def __init__(self,name,private_v1): self.name = name self._private_ ...
- c++学习--继承与派生
继承和派生 1 含有对象成员(子对象)的派生类的构造函数,定义派生类对象成员时,构造函数的执行顺序如下: 1 调用基类的构造函数,对基类数据成员初始化: 2 调用对象成员的构造函数,对对象成员的数据成 ...
- Yii2的深入学习--继承关系
想要了解 Yii2 的话,一定要对 Yii2 中相关类的继承关系有所了解.由于暂时读的代码有限,下面的图中只列出了部分继承关系,之后回跟着源码阅读的越来越多而增加 由上图可以看到 Yii2 中大多数类 ...
- Java学习——继承
将学生工人的共性描述提取出来,单独进行描述,只要让学生和工人与单独描述的这个类有关系,就可以了. 继承:1,提高了代码的复用性.2,让类与类之间产生了关系.有了这个关系,才有了多态的特性. 注意:千万 ...
- day25 python学习 继承,钻石继承 多态
---恢复内容开始--- 通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' d ...
- day25 python学习 继承,钻石继承
通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' def __init__(s ...
- OC学习--继承
1.什么是继承? 继承是指一个对象直接使用另一对象的属性和方法. 继承可以使得子类具有父类的各种属性和方法,而不是再次编写相同的代码.在子类继承父类的同时,可以重新定义某些属性,并重写某些方法, 即 ...
随机推荐
- 改造dede 后台会员目录
可以在后台目录(默认 dede),里面的inc->inc_menu.php 文件里进行添加或更改,实现功能!
- PHP太怪了,in_array() ,strpos,
PHP中在某个字符中查找另外一个字符串,是否存在,用的是strpos,此函数用法,经常很多人用反了,正确的用法是strpos(string,search),strstr等,前面是原字符串,后面是要在原 ...
- IOS中打开应用实现检查更新的功能
//检查更新页面 - (void)Renew{ NSDictionary *infoDic = [[NSBundle mainBundle]infoDictionary]; ...
- (转)Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)
基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个 ...
- Android——文件的保存和读取
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中.可以使用Context ...
- java多线程之:SynchronousQueue队列
SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然.同步队列没有任何内部容量,甚至连一个队列的容量都没有. 不能在同步队列上进行 peek ...
- java多线程机制
多线程使用场景 1.同时需要做两件以上事情时需要开多个线程(例如:上传功能附带进度条显示,一边做上传,一边更新进度条状态.) 2.大量同类型数据需要进行处理(导入导出大量数据) 3.office文档转 ...
- Python的numpy库下的几个小函数的用法
numpy库是Python进行数据分析和矩阵运算的一个非常重要的库,可以说numpy让Python有了matlab的味道 本文主要介绍几个numpy库下的小函数. 1.mat函数 mat函数可以将目标 ...
- Linux启动新进程的三种方法
程序中,我们有时需要启动一个新的进程,来完成其他的工作.下面介绍了三种实现方法,以及这三种方法之间的区别. 1.system函数-调用shell进程,开启新进程system函数,是通过启动shell进 ...
- python_Day3[set集合,函数,全局变量之篇]
一.set集合 1.Set集合特点:无序.不重复,可嵌套 2.set集合创建规则:set = {"123","234"} 字典创建规则:dic = {“Key” ...