繼承筆記

嘰了咣啷biang發表於2012-07-09

派生類的物件可以賦給基類物件,反過來則不行。基類的物件可以指向派生類物件,反過來不行。基類的物件可以引用子類的物件,反過來則不行。

 

 

多重繼承

 

#include <iostream>
using namespace std;
class father
{
private:
	int tall;
public:
	void seta(int a){tall=a;}
	void print1(){cout<<"身高="<<tall<<endl;}
};
class mother
{
private:
	int weight;
public:
	void setb(int b){weight=b;}
	void print2(){cout<<"體重="<<weight<<endl;}
};
class son:public father,private mother
{
private:
	int age;
public:
	void setc(int c,int d){age=c;setb(d);}     //由於mother類是私有繼承,通過派生類的共有函式呼叫基類的私有函式,通過基類的私有函式訪問子類不可訪問的mother的私有成員。
	void print3(){print1();print2();cout<<"年齡="<<age<<endl;}
};
int main()
{
	son a;
	a.seta(55);
	a.setc(66,77);
	a.print3();
	return 0;
}

 

 

派生類中包含基類的物件的例程如下:


 

#include <iostream>
using namespace std;
class father
{
private:
	int a;
public:
	father(int i){a=i;cout<<"構造基類a的值:"<<a<<endl;}
	~father(){cout<<"析構基類a的值:"<<a<<endl;}
};
class son:public father
{
private:
	int b;
	father age;
public:
	son(int i,int j,int k):father(i),age(j)
	{
		b=k;cout<<"構造子類b的值:"<<b<<endl;
	}
	~son(){cout<<"析構子類b的值:"<<b<<endl;}
};
int main()
{
	son b(1,2,3);
	return 0;
}


 

相關文章