多继承代码解析
2017-09-12 15:32
211 查看
#include<iostream>
using namespace std;
/*
多继承的优缺点
实际生活中,一些事物往往会拥有两个或两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念。
多重继承的优点是对象可以调用多个基类中的接口。
多重继承的缺点是容易出现继承向上的二义性*/
class A
{
public:
A(int a):m_a(a){ // 由子类进行初始化,提供一个带参数的构造函数
cout << m_a << endl;
}
void show(){ cout << "A running " << endl; }
void show1(){ cout << "A running " << endl; }
private:
int m_a;
};
class B
{
public:
B(int b) :m_b(b){
cout << m_b << endl;
}
void show(){ cout << "B running " << endl; }
void show2(){ cout << "B running " << endl; }
private:
int m_b;
};
class C :public A, public B
{
public :
C(int c_1, int c_2,int c_3) :A(c_1), B(c_2),m_c(c_3){
cout << m_c << endl;
}
void show(){ cout << "A running " << endl; }
void show3(){ cout << "C running " << endl; }
private :
int m_c;
};
int main()
{
C c(1,2,3);
c.show(); //如果基类和派生类中都声明了show函数,则调用第一个基类(声明顺序)中的函数,若派生类中没有定义show函数,则产生错误,二义性
c.show1();
c.show2();
c.show3();
return 0;
}
using namespace std;
/*
多继承的优缺点
实际生活中,一些事物往往会拥有两个或两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念。
多重继承的优点是对象可以调用多个基类中的接口。
多重继承的缺点是容易出现继承向上的二义性*/
class A
{
public:
A(int a):m_a(a){ // 由子类进行初始化,提供一个带参数的构造函数
cout << m_a << endl;
}
void show(){ cout << "A running " << endl; }
void show1(){ cout << "A running " << endl; }
private:
int m_a;
};
class B
{
public:
B(int b) :m_b(b){
cout << m_b << endl;
}
void show(){ cout << "B running " << endl; }
void show2(){ cout << "B running " << endl; }
private:
int m_b;
};
class C :public A, public B
{
public :
C(int c_1, int c_2,int c_3) :A(c_1), B(c_2),m_c(c_3){
cout << m_c << endl;
}
void show(){ cout << "A running " << endl; }
void show3(){ cout << "C running " << endl; }
private :
int m_c;
};
int main()
{
C c(1,2,3);
c.show(); //如果基类和派生类中都声明了show函数,则调用第一个基类(声明顺序)中的函数,若派生类中没有定义show函数,则产生错误,二义性
c.show1();
c.show2();
c.show3();
return 0;
}
相关文章推荐
- Spring MVC代码实例系列-04:通过自定义视图(继承InternalResourceView),实现既能解析Jsp页面又能解析Html页面的目的
- 面向对象(继承代码解析)
- 第29讲:Case class和Case object代码实战解析
- 访问网络数据+json解析代码片段
- [扫盲]利用架构实例解析面向对象的封装,多态,继承,接口,泛型
- Android Files的文件读取解析+代码案例
- ITE EC代码解析1
- 带标签的infogan及其代码解析
- htmlparser解析网页基本代码
- GRBL三:gcode代码解析
- Android代码混淆配置(Proguard文件解析)
- 继承代码
- OpenGL Super Bible 第四章 Transform 程序绘图部分代码解析
- 如何通过java代码解析xml文件
- 让apache解析html里的PHP代码
- 编辑框等控件边框美化(继承CEdit,然后覆盖OnMouseLeave, OnSetFocus, OnPaint函数即可。原来的CEdit虽然代码不可见,但它也是有句柄的,照样随便画)
- Thrift compiler代码生成类解析
- Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析之Scala学习笔记-34
- JDK 7 新特性小结实例代码解析
- Android代码小记之Xml解析工具类