#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
class Person{
char name[10];
int age;
char sex;
public:
Person(char *n,int a,char s)
{
strcpy(name,n);
age=a;
sex=s;
}
void Register(char *n,int a,char s) {
strcpy(name,n);
age=a; sex=(s=='m'?0:1);
}
/*char *getName() { return name; }
char getSex() { return sex==0?'m':'f'; }
int getAge() { return age; }*/
void showMe() {
cout <<"name: "<<name<<endl<<"sex: "<<sex<<endl<<"age: "<<age<<endl;
}
};
class Teacher:virtual public Person
{
char dept[30];
int salary;
public:
Teacher(char *n,int a,char s,char*d,int salary):Person(n,a,s)
{
strcpy(dept,d);
this->salary=salary;
}
void showMe()
{
cout<<"dept: "<<dept<<endl<<"salary: "<<salary<<endl;
}
};
class Student:virtual public Person
{
char Class [10];
char id[10];
public:
Student(char *n,int a,char s,char*c,char *i):Person(n,a,s)
{
strcpy(Class,c);
strcpy(id,i);
}
void showMe()
{
cout<<"class: "<<Class<<endl<<"id: "<<id<<endl;
}
};
class Graduate:public Teacher,public Student
{
public:
Graduate(const char * n,int a,char s,const char * d,int salary,const char * i,const char * c):Person(n,a,s),Teacher(n,a,s,d,salary),Student(n,a,s,c,i){}
void showMe()
{
Student::showMe();
Person::showMe();
Teacher::showMe();
}
};
int main(){
Graduate stu1("Lisi",22,'m',"College of Informatics",2000,"2015013","S101");
stu1.showMe();
return 0;
}
你是用的哪个开发工具啊。VS2010和VC6下编译通不过,要求几个构造函数的指针参数必须const char *
改成const char *之后,输出就是你期望的输出了。供参考
Student的构造函数有问题
Student(char *n,int a,char s,char*c,char *i):Person(n,a,s)
{
strcpy(Class,c);
strcpy(id,i);
}
你继承是Person类,没有 int salary;成员变量。