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

C++数据成员和成员函数重名问题

渐渐鱼 发布于 2018-05-11 16:01, 1789 次点击
运行结果
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

signal: aborted (core dumped)

程序代码
程序代码:
#include<string>
#include<iostream>
using namespace std;
class Teacher
{
   public:
       Teacher(string name,int age,string gender,string address,string phonenum,string title)
       {
           this->name=name;
           this->age=age;
           this->gender=gender;
           this->address=address;
           this->phonenum=phonenum;
           this->title=title;
       }
   void display();
   
   protected:
   string name;
   int age;
   string gender;
   string address;
   string phonenum;
   string title;  //职称
};
void Teacher::display()
{
    cout<<"姓名"<<name<<endl;
    cout<<"年龄"<<age<<endl;
    cout<<"性别"<<gender<<endl;
    cout<<"地址"<<address<<endl;
    cout<<"电话"<<phonenum<<endl;
}
class Cadre
{
   public:
           Cadre(string name,int age,string gender,string address,string phonenum,string post)
       {
           this->name=name;
           this->age=age;
           this->gender=gender;
           this->address=address;
           this->phonenum=phonenum;
           this->post=post;
       }
   void display();
   protected:
   string name;
   int age;
   string gender;
   string address;
   string phonenum;   
   string post;//职务
   
};
void Cadre::display()
{
    cout<<"姓名"<<name<<endl;
    cout<<"年龄"<<age<<endl;
    cout<<"性别"<<gender<<endl;
    cout<<"地址"<<address<<endl;
    cout<<"电话"<<phonenum<<endl;
}
class Teacher_Cadre : public Teacher,public Cadre
{
    public:
        Teacher_Cadre(string name,int age, string gender, string address, string phonenum,int wage,string post):
        Teacher(name,age,gender,address,phonenum,title),Cadre(name,age,gender,address,phonenum,post)
     {
         //用基类限定符指明,避免二义性问题
         this->Teacher::name=name;
           this->Teacher::age=age;
           this->Teacher::gender=gender;
           this->Teacher::address=address;
           this->Teacher::phonenum=phonenum;
           this->post=post;
           this->wage=wage;
     }
      void show();
     private:
     int wage;   

 };

 void Teacher_Cadre ::show()

 {
     //同上
     Teacher::display();
     cout<<"职务"<<post<<endl;
     cout<<"工资"<<wage<<endl;

 }

 int main()

 {
     Teacher_Cadre l("王二",22,"man","Beng","1811",600,"Eng");
     l.show();
     return 0;

 }
4 回复
#2
Jonny02012018-05-11 23:14
我这里运行是正常的
不过
 Teacher_Cadre(string name,int age, string gender, string address, string phonenum,int wage,string post)
这里面是不是少了个 title?
#3
渐渐鱼2018-05-13 20:31
回复 2楼 Jonny0201
老铁,你用的是什么编译器?。。。。。
#4
渐渐鱼2018-05-13 20:33
回复 3楼 渐渐鱼
另外那个是因为下面没有用title,所以不需要把title加进去,选择下面要初始化的就ok
#5
Jonny02012018-05-13 22:11
回复 3楼 渐渐鱼
Clang 下面是没有报错的
1