首页 > 代码库 > c++构造函数char型指针要重新申请存储空间

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

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:zhangsan
age:30
sex:m
basicSalary:4000
leavedays: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    
**************************************/  






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