继承

#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常用运算符

    Java 语言中常用的运算符可分为如下几种: 1.算术运算符 int i = 5; int j = i++; // i = 6 j = 5 int j = ++i; // i = 6 j = 6 PS ...

  2. 附录二 C语言标准库

    上章回顾 数组和指针相同与不同 通过指针访问数组和通过数组访问指针 指针在什么时候可以加减运算 函数指针的申明和调用 函数数组和数组函数 git@github.com:Kevin-Dfg/Data-S ...

  3. PWM控制led渐变

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

  4. java 四种内部类和内部接口

    /** * 常规内部类:常规内部类没有用static修饰且定义在在外部类类体中. * 1.常规内部类中的方法可以直接使用外部类的实例变量和实例方法. * 2.在常规内部类中可以直接用内部类创建对象 * ...

  5. xUtils3的简单介绍

    xUtils3的简介 xUtils是基于Afinal开发的目前功能比较完善的一个Android开源框架,最近又发布了xUtil3.0,在增加新功能的同时又提高了框架的性能. 1.xUtils包含了很多 ...

  6. linux oracle profile配置

    [oracle@db01 ~]$ more .bash_profile # .bash_profile # Get the aliases and functionsif [ -f ~/.bashrc ...

  7. 最大化 AIX 上的 Java 性能,第 1 部分: 基础

    http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf1.html 最大化 AIX 上的 Java 性能,第 ...

  8. jquery-easyui中表格的行编辑功能

    datagrid现在具有行编辑能力了,使用时只须在columns中为需要编辑的列添加一个editor属性,编辑保存时同时具有数据校验能力. 看一个例子效果图: 代码如下: $('#tt').datag ...

  9. childNodes、nodeName、nodeValue 以及 nodeType

    nodeName.nodeValue 以及 nodeType 包含有关于节点的信息. nodeName 属性含有某个节点的名称. 元素节点的 nodeName 是标签名称属性节点的 nodeName ...

  10. 取消GridView/ListView item被点击时的效果

    方法一,在控件被初始化的时候设置 ? 1 2 gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); listView.setSelec ...