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

c++问题

魔鬼之子 发布于 2009-09-24 15:51, 548 次点击
# 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遇到关闭问题,出现不了预想的结果。
7 回复
#2
f23782009-09-24 22:32
char *L_UserName;
char *L_UserPassword;

在构造函数先初始化指针吧
#3
xiaohui2402009-09-25 16:02
# 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;
}
#4
haitao99992009-09-26 14:38
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;
}
#5
飞天的猪2009-09-28 13:33
不用申请内存也行,指针是顺序存放的
#6
wen111hui2009-09-28 22:18
#7
小兰012009-09-29 11:22
换个工作空间试试看.
#8
taozztzz2009-09-29 14:20
以下是引用飞天的猪在2009-9-28 13:33:49的发言:

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

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

否则会发生内存泄露!
1