c++继承和派生

来源:百度知道 编辑:UC知道 时间:2024/06/02 14:49:03
#include <iostream>
#include <string>
using namespace std;
class person
{
public:
person(string nam,int a,char s,string addr,long t):name(nam),age(a),sex(s),address(addr)
{
tel=t;
}
void output()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"address:"<<address<<endl;
cout<<"tel:"<<tel<<endl;
}
protected:
string name;
int age;
char sex;
string address;
long tel;
};
class teacher:virtual public person
{
public:
teacher(string nam,int a,char s,string addr,long t,string tit):person(nam,a,s,addr,t),title(tit)
{}
void display()
{output();
cout<<title<<endl;}
protected:
string title;

你的构造函数的参数列表和调用时传入的参数不一致啊,比如
person(string nam,int a,char s,string addr,long t)是五个参数,但是你调用的时候person(nam,a,s,addr),只传了四个参数,最后那个long t你没给参数值。
teacher_cadre的构造函数也是同样的错误。

void display()
{person::output(); \\改
cout<<title<<endl;}

void print()
{person::output(); \\改
cout<<post<<endl;}

void show()
{teacher::display(); \\改
cout<<post<<wages<<endl;}

分太低了,把错误原因也帖上来啊!