[c++]代码库
#include <iostream>
using namespace std;
class father
{
public:
father ( int height ); //父类构造函数带有一个参数height
virtual ~father() {cout<<"析构父亲...\n";}
virtual void smart() const {cout<<"父亲很聪明"<<endl;}
virtual int getheight() const {return itsheight;} //通过成员函数访问私有变量并设置私有变量的值,该函数被说明为虚函数
private:
int itsheight; //私有成员itsheight
};
father::father ( int height ) :itsheight ( height ) //通过构造函数来设置私有变量的值
{
cout<<"创建父亲\n";
}
class mother
{
public:
mother ( bool sex ); //母类的构造函数有一个布尔型参数sex
virtual ~mother() {cout<<"析构母亲\n";}
virtual void beautiful() const {cout<<"母亲很漂亮\n";}
virtual bool getsex() const {return itsex;} //通过布尔型成员函数访问私有变量并设置私有变量的值,该函数被说明为虚函数
private:
bool itsex; //私有布尔变量itsex
};
mother::mother ( bool sex ) :itsex ( sex ) //定义母类的布尔型构造函数sex并设置私有成员的值
{
cout<<"创建母亲\n";
}
class son:public father,public mother //子类分别继承母类和父类,继承权限为公有
{
public:
~son() {cout<<"析构小儿子..."<<endl;}
son ( int,bool,long ); //子类的构造函数带有三个参数,类型为int,bool和long。
virtual long getnum() const //通过long型成员函数getnum访问并返回私有变量num的值。
{
return num;
}
private:
long num;
};
son::son ( int height,bool sex,long number ) :father ( height ),mother ( sex ),
num ( number ) //子类在构造函数的同时进行初始化,初始化的顺序由程序员指定,这里是首先初始化父类height参数,然后初始化母类的sex参数,最后初始化子类的number参数。
{ //所有这些初始化工作完成后
cout<<"创建小儿子\n"; //方才执行son的构造函数
}
int main()
{
son*ps=new son ( 5,true,3 ); //在堆中创建一个son类对象并初始化构造函数的三个参数,同时声明一个son类的指针使其指向这个新建的堆
ps->beautiful(); //用该指针访问从母类继承来的虚函数
ps->smart(); //用该指针访问从父类继承来的虚函数
cout<<"\n小儿子有"<<ps->getheight(); //用该指针访问从父类继承来的虚函数
cout<<"英尺高\n";
if ( ps->getsex() ) //用该指针访问从母类继承来的布尔函数
cout<<"性别:男";
else
cout<<"性别:女";
cout<<"\n在家排行:第"<<ps->getnum() <<endl; //用该指针访问子类的getnum函数
delete ps; //删除这个指向son类对象的指针
system ( "pause" );
return 0;
}