多继承

原创 2013年12月05日 23:25:37

一个基类可以派生出多个派生类,同样,一个派生类可以继承多个基类。

例子:

#include <iostream>
using namespace std;

class BaseA
{
public:
	void SetA(int x) { a = x;}//非构造函数
protected:
	int a;
};
class BaseB
{
public:
	void SetB(int y) { b = y;}//非构造函数
protected:
	int b;
};
class Inherit : public BaseA, public BaseB  // 定义多继承的派生类
{
public:
	int GetAB() { return (a+b); }
};

int main()
{
	Inherit Zerone;
	Zerone.SetA(12);
	Zerone.SetB(5);
	cout<<"a+b = "<<Zerone.GetAB()<<endl;

	return 0;
}

程序运行显示结果:



      多继承下调用派生类的构造函数时,首先要调用该派生类所有基类的构造函数。而处于同一层的基类的构造函数的执行顺序取决于定义派生类时各基类的排列顺序,与定义派生类的构造函数时基类构造函数的排列顺序无关。

从下面这个程序中观察多继承方式下的构造函数的执行顺序。

例子:

#include <iostream>
using namespace std;

class BaseA
{
public:
	BaseA(int x) 
	{ 
		a = x;
		cout<<"正在执行BaseA类的构造函数..."<<endl; 
	}
	int GetA() { return a;}
private:
	int a;
};
class BaseB
{
public:
	BaseB(int y) 
	{ 
		b = y;
		cout<<"正在执行BaseB类的构造函数..."<<endl; 
	}
	int GetB() { return b;}
private:
	int b;
};
class Inherit : public BaseA, public BaseB  // 定义顺序决定了基类构造函数的调用顺序
{
public:
	Inherit(int x, int y, int z):BaseB(z),BaseA(y)  //基类构造函数的调用顺序与排列顺序无关
	{
		c = x;
		cout<<"正在执行Inherit类的构造函数..."<<endl;
	}
	void Show() 
	{
		cout<<"GetA() = "<<GetA()<<endl;
		cout<<"GetB() = "<<GetB()<<endl;
		cout<<"c = "<<c<<endl;
	}
protected:
	int c;
};

int main()
{
	Inherit Zerone(2013,12,05);
	Zerone.Show();

	return 0;
}

程序运行显示结果:



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

27_Java为什么没有多继承

  • 2016年03月28日 15:41
  • 6.25MB
  • 下载

C++多继承详细

  • 2015年12月16日 20:35
  • 34KB
  • 下载

C# EF CodeFirst简单工厂模式,接口多继承实例

1.基层接口,定义基本访问方法 /// /// 基础访问接口,使用泛型 /// public interface IBaseAbstract where T : class { #regi...

多继承与虚基类

  • 2013年05月14日 19:01
  • 24KB
  • 下载

多继承和虚基类PPT

  • 2008年11月18日 13:27
  • 266KB
  • 下载

Objective C实现多继承!

我们都知道objective C不能像C++一样支持多继承,但是在OC的使用经常会碰到需要使用多继承的情况。例如,ClassA中有methodA,ClassB中methodB,而现在需要使用这两个类中...

讲解C++多继承

  • 2008年04月29日 15:09
  • 52KB
  • 下载

Java 接口多继承

  • 2017年05月29日 17:17
  • 11KB
  • 下载

Java为什么不支持多继承

多继承指一个子类能同时继承于多个父类,从而同时拥有多个父类的特征,但缺点是显著的。 1.若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量。如: public c...

C++多继承实例

  • 2016年10月25日 10:29
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多继承
举报原因:
原因补充:

(最多只允许输入30个字)