免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1120 | 回复: 2
打印 上一主题 下一主题

大家帮忙看一下还有没有更好的方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-05 05:33 |只看该作者 |倒序浏览
创建一个Employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码,把表示构造函数、ChangeName()、Display的函数原型改在类定议中,构造函初始化每个成员,Display()函数把完整的对象数据打印出来,其中数据成员是保护的,函数是共公的。
#include <iostream.h>;
#include <string.h>;
class Employee
{
        public:
           Employee();
           void ChangeName(char * pName,int i,char * pAddress,int j);
           void Display();
        private:
           char * name;
           char * address;
           char * city;
           char * province;
           double postcode;
};
Employee::Employee()
{
        name="jack";
        address="workers way";
        city="WuHan";
        province="HuBei";
        postcode=430012;
}
void Employee:isplay()
{
        cout<<"姓名:"<<name<<endl
            <<"地址:"<<address<<endl
            <<"城市:"<<city<<endl
            <<"省份:"<<province<<endl
            <<"邮政编码:"<<postcode<<endl;
}
void Employee::ChangeName(char * pName,int i,char * pAddress,int j)
{
        strcpy(name,pName,i);
        strcpy(address,pAddress,j);
}
void main()
{
        Employee a;
        a.Display();
        char x[10],y[30];
        int i,j;
        cout<<"请输入新的姓名:";
        for(i=0;i<10;i++)
        {
                a=getchar();
                if(a=='\n')
                        break;
        }
        a='\0';
        cout<<"请输入新的地址:";
        for(j=0;j<30;j++)
        {
                b[j]=getchar();
                if(b[j]=='\0')
                        break;
        }
        b[j]='\0';
        a.ChangeName(x,i,y,j);
        a.Display();
}




这样应该没问题吧?

论坛徽章:
0
2 [报告]
发表于 2004-06-05 22:29 |只看该作者

大家帮忙看一下还有没有更好的方法

你编译没有? 有没有问题?
不过咋一看, 建议你不要用strcpy之类的function, 为什么不用string呢?

有那么多的指针, 轻考虑你的copy constructor

论坛徽章:
0
3 [报告]
发表于 2004-06-05 23:23 |只看该作者

大家帮忙看一下还有没有更好的方法

那么多的指针,都没有动态分配内存,直接指向字符串常量,用strcpy操作要出问题的,但是编译会通过。
strcpy只有两个参数,strncpy才有长度参数,但是strncpy不会加字符'\0',要自己加。
a是什么东西,b又是从哪里来的,编译不会通过。

如果是刚开始写c++的,只要没有其他特殊要求的话,建议你用stl的string吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP