瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 关于c++的问题 我是新手 请大家帮帮我
美丽的星空 - 2005-7-13 12:23:00
#include<iostream.h>
#include<string.h>
class cdemo{
public:
    cdemo(char*s)
    {
        ps=new char[strlen(s)+1];
        strcpy(ps,s);
    }
    cdemo &operator=(cdemo &a)
    {
        if(ps)delete[] ps;
        if(a.ps){
            ps=new char[strlen(a.ps)+1];
            strcpy(ps,a.ps);
        }
        else ps=0;
        return *this;
    }
    ~cdemo()
    {
        if(ps)delete[] ps;
    }
    void print()
    {
        cout<<ps<<endl;
    }
private:
    char *ps;
};
void main()
{
    cdemo d1("key"),d2("mouse");
    d1=d2;
    d1.print();
}
看看这一段

cdemo &operator=(cdemo &a)    {
        if(ps)delete[] ps;
        if(a.ps){
            ps=new char[strlen(a.ps)+1];
            strcpy(ps,a.ps);
        }
        else ps=0;
        return *this;
    }
cdemo&  这个是返回什么啊  是什么意思啊
好晕哦  可以帮我解释的清楚点吗?
还有 '='的重载是不是只可以是非静态成员函数啊?


robbin - 2005-7-14 14:09:00
cdemo& 返回的是引用
return *this返回对当前对象的引用
比如cdemo obja,ogjb;
obja = objb;
obja会调用cdemo &operator=(cdemo &a)函数,参数a现在是objb
;返回值就是obja他自己。
美丽的星空 - 2005-7-15 10:59:00
那为什么要返回引用啊????
它的作用是什么?
海蓝云天 - 2005-7-16 1:04:00
你可以理解为返回他的内存地址
1
查看完整版本: 关于c++的问题 我是新手 请大家帮帮我