继承

#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. Android—菜单

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  2. 越狱Season 1- Episode 22: Flight

    Season 1, Episode 22: Flight -Franklin: You know you got a couple of foxes in your henhouse, right? ...

  3. 【NOIP2014D2T3】解方程

    神题一道,做了整整两天(其实是一个思路错了然后搞了两天QAQ) 原题: 已知多项式方程:a0+a1*x+a2*x^2+a3^x3+……+an^xn=0 求这个方程在[1, m]内的整数解(n 和 m ...

  4. PWM控制led渐变

    PWM,中文释义:脉冲宽度调制.它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术. PWM 是一种对模拟信号电平进行数字编码的方法.通过高分辨率计数器的使用,方波的占空比被调制用来对 ...

  5. MySQL root密码重置 报错:mysqladmin: connect to server at 'localhost' failed的解决方案

    ===========================================================二,忘记本地root的登录密码解决过程:1.编辑/mysql/my.ini在[my ...

  6. DEBUG MYSQL

    https://dev.mysql.com/doc/refman/5.7/en/porting.html https://dev.mysql.com/doc/refman/5.7/en/debuggi ...

  7. SET XACT_ABORT ON

    SET XACT_ABORT ON时,在事务中,若出现错误,系统即默认回滚事务,但只对非自定义错误有效 SET XACT_ABORT OFF,默认值,在事务中,回滚一个语句还是整个事务视错误的严重程序 ...

  8. asp.net MVC 帮助助手和函数( @helper @functions)

    asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...

  9. java生态环境

    Which Java package do I need? Software Developers: JDK (Java SE Development Kit). For Java Developer ...

  10. 【转】Android Drawable Resource学习(十一)、RotateDrawable

    对另一个drawable资源,基于当前的level,进行旋转的drawable. 文件位置: res/drawable/filename.xml文件名即资源名 编译数据类型: 指向 RotateDra ...