注册 登录
编程论坛 C++教室

虚基类问题!忙各位帮忙解决一下!

IT男year 发布于 2013-11-24 21:16, 455 次点击
#include<iostream>
#include<string>
using namespace std;

/*********数据类*********/
class date
{
private:
    string name;//姓名
public:
    date();//无参构造函数
    date(string name);//有参构造函数
    void print();//输出函数
};

/*********教师类*********/
class teacher:virtual public date
{
private:
    float salary;//薪资
public:
    teacher();//无参构造函数
    teacher(string name,float salary);//有参构造函数
    void print();//输出函数
};

/*********学生类*********/
class student:virtual public date
{
private:
    string number;//学号
public:
    student();//无参构造函数
    student(string name,string number);//有参构造函数
    void print();//输出函数
};

/*********研究生类*********/
class postgrad:public student
{
private:
    string dn;//系别
public:
    postgrad();//无参构造函数
    postgrad(string name,string number,string dn);//有参构造函数
    void print();//输出函数
};

/*********在职研究生类*********/
class tpost:public teacher,public postgrad
{
public:
    tpost();//无参构造函数
    tpost(string name,string number,string dn);//有参构造函数
    void print();//输出函数
};

/*********主函数*********/
int main()
{
    return 0;
}


/*********数据类成员函数的定义*********/
date::date()//无参构造函数
{
}
date::date(string name)//有参构造函数
{
    this->name=name;
}
void date::print()//输出函数
{
    cout<<"姓名:"<<name;
}

/*********教师类成员函数的定义*********/
teacher::teacher()//无参构造函数
{
}
teacher::teacher(string name,float salary):date(name)//有参构造函数
{
    this->salary=salary;
}
void teacher::print()//输出函数
{
    date::print();
    cout<<"薪水:"<<salary;
}

/*********学生类成员函数的定义*********/
student::student()//无参构造函数
{
}
student::student(string name,string number):date(name)//有参构造函数
{
    this->number=number;
}
void student::print()//输出函数
{
    date::print();
    cout<<"学号:"<<number;
}

/*********研究生类成员函数的定义*********/
postgrad::postgrad()//无参构造函数
{
}
postgrad::postgrad(string name,string number,string dn):student(name,number)//有参构造函数
{
    this->dn=dn;
}   
void postgrad::print()//输出函数
{
    student::print();
    cout<<"所属系:"<<dn;
}

/*********在职研究生类成员函数的定义*********/
tpost::tpost()//无参构造函数
{
}
tpost::tpost(string name,float salary,string number,string dn):teacher(name,salary),postgrad(name,number,dn),date(name)//有参构造函数
{
}
void tpost::print();//输出函数
{
    postgrad::print();
}
数据类(date)被教师类(teacher)继承、数据类(date)被学生类(student)继承,学生类(student)被研究生类(postgrad)继承,教师类(teacher)和研究生类(postgrad)被
在职研究生类(tpost)继承。我想把数据类(date)声明为虚基类可以吗?可以的话,怎么声明???
3 回复
#2
blueskiner2013-11-25 09:48
数据的英文应该是data吧?不是date(日期);
貌似就是你这种声明,值得提一下的是,派生自虚基类的子类,可以指定在子类初始化成员列表对虚基类的构造进行调用

[ 本帖最后由 blueskiner 于 2013-11-25 09:58 编辑 ]
#3
blueskiner2013-11-25 10:04
这个版块就应该多些楼主这种问题,可以涵盖C++对象模型的探索问题,而不是一些作业算法题和脑残求码贴。支持你。
只有本站会员才能查看附件,请 登录
附上一个代码,你参考学习下吧。

[ 本帖最后由 blueskiner 于 2013-11-25 10:31 编辑 ]
#4
左手拉一只猫2013-11-25 12:24
以下是引用blueskiner在2013-11-25 10:04:48的发言:

这个版块就应该多些楼主这种问题,可以涵盖C++对象模型的探索问题,而不是一些作业算法题和脑残求码贴。支持你。附上一个代码,你参考学习下吧。

支持!!!
1