{
strcpy(Academician::speciality,speciality);
}
virtualvoid outmembers(ostream &out)
{
out<<"Age:"<
protected:
char speciality[80];
};
class GraduateStudent:public Academician
{
public:
GraduateStudent(int age = 0,char *name = "\0",char *speciality="\0",
char *investigate="\0"):Academician(age,name,speciality)
{
strcpy(GraduateStudent::investigate,investigate);
}
virtualvoid outmembers(ostream &out)
{
out<<"Age:"<
protected:
char investigate[100];
};
intmain()
{
Academician a(24,"管宁","Computer Science");
cout< GraduateStudent b(24,"严燕玲","Computer Science","GIS System");
cout< system("pause");
}
在上面的代码中为了能够区分输出a对象与b对象,我们用虚函数的方式重载了继承类Academician与多重继承类GraduateStudent的outmembers成员函数,由于ostream& operator <<(ostream& out,Student &temp) 运算符重载函数是Student基类的,Student &temp参数通过虚函数的定义可以适应不同派生类对象,所以在其内部调用temp.outmembers(out); 系统可识别不同继类的outmembers()成员函数。
最后看一下,右移运算符的重载,右移运算符我们也常叫它输入运算符号,对于它来说,具体实现和左移运算符的重载差别并不大,对于有多成员对象的类来说,只要保证能够完整输入各成员对象大数据就可以了。
示例如下:
//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者
#include <iostream>
usingnamespace std;
class Test
{
public:
Test(int age = 0,char *name = "\0")
{
Test::age = age;
strcpy(Test::name,name);
}
void inputmembers(istream &out)
{
cout<<"please input age:";
cin>>Test::age;
cout<<"please input name:";
cin>>Test::name;
}
friendistream& operator >>(istream& ,Test&);
public:
int age;
char name[50];
};
istream& operator >>(istream& input,Test &temp)
{
temp.inputmembers(input);
return input;
}
intmain()
{
Test a;
cin>>a;
cout<
}