继承

#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++学习-继承的更多相关文章

  1. JavaScript 核心学习——继承

    本篇博文讲述如何在 JavaScript 中实现继承,以及原型与原型链的知识,在附录中将会讲述 JavaScript 面向对象的常见错误. ##原型与原型链在 JavaScript 中,使用类将会付出 ...

  2. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  3. python学习-继承

    # 继承# 你的是我的,我的还是我的 class Animal: def __init__(self,name,private_v1): self.name = name self._private_ ...

  4. c++学习--继承与派生

    继承和派生 1 含有对象成员(子对象)的派生类的构造函数,定义派生类对象成员时,构造函数的执行顺序如下: 1 调用基类的构造函数,对基类数据成员初始化: 2 调用对象成员的构造函数,对对象成员的数据成 ...

  5. Yii2的深入学习--继承关系

    想要了解 Yii2 的话,一定要对 Yii2 中相关类的继承关系有所了解.由于暂时读的代码有限,下面的图中只列出了部分继承关系,之后回跟着源码阅读的越来越多而增加 由上图可以看到 Yii2 中大多数类 ...

  6. Java学习——继承

    将学生工人的共性描述提取出来,单独进行描述,只要让学生和工人与单独描述的这个类有关系,就可以了. 继承:1,提高了代码的复用性.2,让类与类之间产生了关系.有了这个关系,才有了多态的特性. 注意:千万 ...

  7. day25 python学习 继承,钻石继承 多态

    ---恢复内容开始--- 通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' d ...

  8. day25 python学习 继承,钻石继承

    通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' def __init__(s ...

  9. OC学习--继承

     1.什么是继承? 继承是指一个对象直接使用另一对象的属性和方法. 继承可以使得子类具有父类的各种属性和方法,而不是再次编写相同的代码.在子类继承父类的同时,可以重新定义某些属性,并重写某些方法, 即 ...

随机推荐

  1. java中将汉字转换成16进制

    技术交流群:233513714 /** * 将汉字转换车16进制字符串 * @param str * @return st */ public static String enUnicode(Stri ...

  2. Ghost的相关问题

    一些和Ghost使用有关的问题,记录在这里. 1,有时候使用ghost恢复,发现最后一步选择驱动器是灰色的,这是因为备份文件有些是用Disk模式,有些使用partition模式,所有恢复的时候如果其中 ...

  3. Linux驱动设计—— 中断与时钟@request_irq参数详解

    request_irq函数定义 /*include <linux/interrupt.h>*/ int request_irq(unsigned int irq, irq_handler_ ...

  4. Linux嵌入式入门

    虚拟机Linux系统网络配置: 1.Vmware网络设置       虚拟机设置->网路适配器->网络连接 桥接模式:能提供独立的IP地址的情况下使用 NAT模式:一台计算机只能使用一个I ...

  5. 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!

    转--http://www.2cto.com/kf/201402/277535.html 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版! 2014-02-11     ...

  6. oracle闪回使用以及删除存储过程恢复

    oracle恢复删除的数据  恢复删除的存储过程 SELECT * FROM dba_source as of timestamp (systimestamp -interval'600'second ...

  7. 把excel数据生成sql insert语句

    excel表格中有A.B.C三列数据,希望导入到数据库users表中,对应的字段分别是name,sex,age . 在你的excel表格中增加一列,利用excel的公式自动生成sql语句,方法如下: ...

  8. C# 开发BHO插件

    BHO(Browser Helper Object)是插件,它寄存在IE浏览器中运行.在咱们的日常生活中无时无刻都在使用BHO,比如:迅雷检测用户是否单击了下载链接的BHO.用BHO也能做出些非常有意 ...

  9. Maven中Spring-Data-Redis存储对象(redisTemplate)

    Redis是一种nosql数据库,在开发中常用做缓存.Jedis是Redis在java中的redis- client.在此之前,希望已经了解redis的基本使用和Maven的使用.建立Maven Pr ...

  10. Live Writer安装报错的问题,OnCatalogResult:0x80190194

    到官网下载了一个在线安装程序,可是一运行就提示无法安装,显式错误"OnCatalogResult:0x80190194",如下图所示   找到windows live安装程序的安装 ...