派生类的对象可以赋给基类对象,反过来则不行。基类的对象可以指向派生类对象,反过来不行。基类的对象可以引用子类的对象,反过来则不行。
多重继承
#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;
}