c++构造函数char型指针要重新申请存储空间

来源:互联网 发布:linux wput 编辑:程序博客网 时间:2024/05/21 01:29

5-2 派生类的构造函数

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

要求定义一个基类Person,它有3protected的数据成员:姓名name(char *类型)、性别 sex(char类型)、年龄age(int类型);一个构造函数用于对数据成员初始化;有一个成员函数show()用于输出数据成员的信息。

5个数据,分别代表姓名、性别、年龄、基本工资、请假天数。

输出

  <p class="\"cjk\"" margin-bottom:="" "="">如示例数据所示,共5行,分别代表姓名、年龄、性别、基本工资、请假天数

示例输入

zhangsan m 30 4000 2

示例输出

name:zhangsanage:30sex:mbasicSalary:4000leavedays:2
c++构造函数char型指针要重新申请存储空间,不然每一次都是同一个地址值。。
#include<iostream>   #include<iomanip>   #include<algorithm>   #include<cstring>   using namespace std;   class person   {   protected:       char *name;       char *sex;       int age;   public:       person(char *a,char *b,int c):age(c)       {           name=new char[strlen(a)+1];           strcpy(name,a);           sex=new char[strlen(b)+1];           strcpy(sex,b);       }       void show()       {           cout<<"name:"<<name<<endl<<"age:"<<age<<endl<<"sex:"<<sex<<endl;       }   };   class employee:public person   {       int salary;       int dayoff;   public:       employee(char *a,char*b,int c,int d,int e):person(a,b,c),salary(d),dayoff(e){}       void show()       {           cout<<"basicSalary:"<<salary<<endl;           cout<<"leavedays:"<<dayoff<<endl;       }   };   int main()   {       char a[20],b[20];       int c,d,e;       while(cin>>a>>b>>c>>d>>e)       {           employee employ(a,b,c,d,e);           employ.person::show();           employ.show();       }   }             /**************************************      Problem id  : SDUT OJ 2712       User name   : linjiaiqn       Result      : Accepted       Take Memory : 500K       Take Time   : 0MS       Submit Time : 2014-07-20 23:01:54    **************************************/  






1 0