设计一个User类,数据成员有pUserName和pPassWord两个指向字符的指针,采用动态内存分配方式存储用户名和口令;

设计一个User类,数据成员有pUserName和pPassWord两个指向字符的指针,采用动态内存分配方式存储用户名和口令;编写GetUser( )、GetPass( )两个成员函数,用于获取用户名和口令;其余成员函数按需要编写。在main( )中定义一个User类的对象数组ua,元素个数为4;当用户输入一个用户名后,在ua中查找,找到后输出对应的口令,找不到时输出相应的提示信息。

#include <iostream>
#include <string>
using namespace std;
class User
{
private:
    char* pUserName;
    char* pPassWord;
public:
    User(){pUserName=0;pPassWord=0;}
    User(char* u,char* p)
    {
        pUserName = new char[strlen(u)+1];
        memcpy(pUserName,u,strlen(u));
        pUserName[strlen(u)] = 0;
        pPassWord = new char[strlen(p)+1];
        memcpy(pPassWord,p,strlen(p));
        pPassWord[strlen(p)]=0;
        //cout << pUserName << "  " << pPassWord<<endl;
    }
    ~User()
    {
        if(pUserName){delete[] pUserName;pUserName=0;}
        if(pPassWord){delete[] pPassWord;pPassWord=0;}
        //cout << "relesase"<<endl;
    }
    char* GetUser()    {return pUserName;    }
    char* GetPass(){return pPassWord;}
};

int main()
{
    User ua[4] = {User("zhangsan","123"),User("lisi","234"),User("wangwu","456"),User("ligang","789")};
    char buf[10];
    int i;
    cout << "请输入用户名:";
    cin >> buf;
    for (i = 0;i<4;i++)
    {
        if(strcmp(buf,ua[i].GetUser())==0)
        {
            cout << ua[i].GetPass()<<endl;
            break;
        }
    }
    if(i==4)
        cout << "not find"<<endl;
    return 0;
}

c++ 直接用string 作为成员变量,如果你用char* ,那么必然要实现copy construct 和operator=()太麻烦