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.什么是继承? 继承是指一个对象直接使用另一对象的属性和方法. 继承可以使得子类具有父类的各种属性和方法,而不是再次编写相同的代码.在子类继承父类的同时,可以重新定义某些属性,并重写某些方法, 即 ...
随机推荐
- 不带www的域名跳转至www域名
由于我网站是架设在Linux的VPS上的,所以我用例如下方法 .htaccess文件 首先要开启Apache服务器的.htaccess功能,我在Apache安全配置中有分享过:开启之后新建一个.hta ...
- 这个代码怎么改??Help快速排序 quicksort
#include<stdio.h>int a[101],n;void quicksort(int left,int right){ int i,j,t,temp; if(l ...
- Mac OS实用技巧
→常用快捷键Win+Space Spotlight查找Win+↑ 平铺所有窗口Win+↓ 平铺当前焦点应用的所有窗口Win+←/→ 桌面之间切换 ...
- Python实现ORM
ORM即把数据库中的一个数据表给映射到代码里的一个类上,表的字段对应着类的属性.将增删改查等基本操作封装为类对应的方法,从而写出更干净和更富有层次性的代码. 以查询数据为例,原始的写法要Python代 ...
- Scrum 项目3.0
Scrum 项目3.0 3.0----------------------------------------------------- SCRUM 流程的步骤2: Spring 计划 1. 确保pr ...
- 【转】轻松搞定FTP之FlashFxp全攻略
转载网址:http://www.newhua.com/2008/0603/39163.shtml 轻松搞定FTP之FlashFxp全攻略 导读: FlashFXP是一款功能强大的FXP/FTP软件,融 ...
- VS产生sdf和ipch文件太大处理方案
方法: 工具-->选项-->文本编辑器-->C/C++-->高级-->回退位置,把始终使用回退位置设置为true,回退位置已在使用,不警告也设置为true,回退位置设置为 ...
- python数据类型之str用法
1.首字母大写 语法:S.capitalize() -> str title = "today is a good day" title_ca = title.capital ...
- windows下做react native官方例子遇到的问题
1.android/app/build.gradle文件中,指定了版本: compileSdkVersion 23buildToolsVersion "23.0.1" 需要在设置中 ...
- SQL集合运算参考及案例(一):列值分组累计求和
概述 目前企业应用系统使用的大多数据库都是关系型数据库,关系数据库依赖的理论就是针对集合运算的关系代数.关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式.不过我们在工作中发现,很多人 ...