| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 548 人关注过本帖
标题:c++问题
只看楼主 加入收藏
魔鬼之子
Rank: 1
来 自:地狱之都
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-9-22
结帖率:71.43%
收藏
 问题点数:0 回复次数:7 
c++问题
# include<iostream>
using namespace std;

class CUser{
private:
        char *L_UserName;
        char *L_UserPassword;
public:
       CUser(){
            strcpy(this->L_UserName,"SUNKAI");
            strcpy(this->L_UserPassword,"123");
       }
       char *GetUserName()const{
            return L_UserName;
       }
       char *GetUserPassword()const{
            return L_UserPassword;
       }
};

void main(){
     CUser user;
     cout<<user.GetUserName()<<endl;
     cout<<user.GetUserPassword()<<endl;
}
以上程序在编译是也没出错,可是在运行时却说什么ClassObject.exe遇到关闭问题,出现不了预想的结果。
搜索更多相关主题的帖子: private include public return 
2009-09-24 15:51
f2378
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2009-9-15
收藏
得分:0 
char *L_UserName;
char *L_UserPassword;

在构造函数先初始化指针吧
2009-09-24 22:32
xiaohui240
Rank: 1
来 自:武汉
等 级:新手上路
威 望:1
帖 子:9
专家分:8
注 册:2009-9-24
收藏
得分:0 
# include<iostream>
using namespace std;
 
class CUser{
private:
        char *L_UserName;
        char *L_UserPassword;
public:
       CUser(){
//           strcpy(this->L_UserName,"SUNKAI");
//           strcpy(this->L_UserPassword,"123");
           L_UserName = "SUNKAI";
           L_UserPassword = "123";
       }
       char *GetUserName()const{
           return L_UserName;
       }
       char *GetUserPassword()const{
           return L_UserPassword;
       }
};
 
void main(){
    CUser user;
    cout<<user.GetUserName()<<endl;
    cout<<user.GetUserPassword()<<endl;
}
2009-09-25 16:02
haitao9999
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2006-4-10
收藏
得分:0 
L_UserName和L_UserPassword指针在使用前必须申请内存,否则在赋值时没有存放位置。修改后代码如下:
#include<iostream>
using namespace std;
 
class CUser{
private:
        char *L_UserName;
        char *L_UserPassword;
public:
       CUser(){
           L_UserName = new char[100];
           L_UserPassword = new char[100];
            strcpy(this->L_UserName,"SUNKAI");
            strcpy(this->L_UserPassword,"123");
       }
       char *GetUserName()const{
            return L_UserName;
       }
       char *GetUserPassword()const{
            return L_UserPassword;
       }
};
 
int main(){
     CUser user;
     cout<<user.GetUserName()<<endl;
     cout<<user.GetUserPassword()<<endl;
}
2009-09-26 14:38
飞天的猪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:141
注 册:2009-9-19
收藏
得分:0 
不用申请内存也行,指针是顺序存放的
2009-09-28 13:33
wen111hui
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-5-25
收藏
得分:0 
2009-09-28 22:18
小兰01
Rank: 2
等 级:论坛游民
帖 子:24
专家分:33
注 册:2009-9-9
收藏
得分:0 
换个工作空间试试看.
2009-09-29 11:22
taozztzz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:180
注 册:2008-12-21
收藏
得分:0 
以下是引用飞天的猪在2009-9-28 13:33:49的发言:

不用申请内存也行,指针是顺序存放的
谁跟你说可以不申请内存的?当然要申请!
用四楼的可以解决问题,但是要加一个析构函数:

CUser::~CUser()
{
    delete [] L_UserName;
    delete [] L_UserPassword;
}

否则会发生内存泄露!

胜利是唯一的信仰!
2009-09-29 14:20
快速回复:c++问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023310 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved