C++多继承

       可以用多个基类来派生一个类。
C++多继承_第1张图片
格式为:

class 类名:类名1,…, 类名n
{
private: … ; //私有成员说明;
public: … ; //公有成员说明;
protected: … ; //保护的成员说明;
};

class D: public A, protected B, private C
{
…//派生类中新增加成员
};
示例:

#include 
using namespace std;

class A
{
public:
	A(int a)
	{
		cout << "调用基类A:构造函数.\n";
		x = a;
	}
	~A()
	{
		cout << "调用基类A:析构函数.\n";
	}

private:
	int x;
};

class B
{
public:
	B(int a)
	{
		cout << "调用基类B:构造函数.\n";
		y = a;
	}
	~B()
	{
		cout << "调用基类B:析构函数.\n";
	}

private:
	int y;
};

class C :public A, public B
{
public:
	C(int a,int b):A(a),B(100)
	{
		cout << "调用派生类C:构造函数.\n";
		z = a;
	}
	~C() 
	{
		cout << "调用派生类C:析构函数.\n";
	}

private:
	int z;
};


int main()
{
	C obj(10, 50);


	return 0;
}

初始化基类成员

       构造函数不能被继承,派生类的构造函数必须调用基类的构造函数来初始化基类成员基类子对象。
派生类构造函数的调用顺序如下:

  • 基类的构造函数
  • 派生类的构造函数

示例:

#include 
using namespace std;

class A
{
public:
	A()
	{
		cout << "调用基类A:默认构造函数.\n";
	}
	A(int a)
	{
		cout << "调用基类A:构造函数.\n";
		x = a;
	}
	~A()
	{
		cout << "调用基类A:析构函数.\n";
	}

private:
	int x;
};

class B
{
public:
	B(int a)
	{
		cout << "调用基类B:构造函数.\n";
		y = a;
	}
	~B()
	{
		cout << "调用基类B:析构函数.\n";
	}

private:
	int y;
};

class C :public A, public B
{
public:
	C(int a, int b) :A(a), B(100)
	{
		cout << "调用派生类C:构造函数.\n";
		z = a;
	}
	~C()
	{
		cout << "调用派生类C:析构函数.\n";
	}

private:
	int z;
	A obj1,obj2;
};


int main()
{
	C obj(10, 20);

	return 0;
}

你可能感兴趣的:(C++学习总结,c++)