| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:运算符重载的问题,求助
只看楼主 加入收藏
shenyulv
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:166
专家分:150
注 册:2009-3-8
结帖率:96.43%
收藏
已结贴  问题点数:20 回复次数:1 
运算符重载的问题,求助
#include "iostream"
using namespace std;
#include "cstring"
class Namelist
{
    char*name;  //定义全局变量吗?这个不清楚什么意思?
public:
    Namelist(char*p)   
    {
        name=new char[strlen(p)+1];   //这一句是什么意思,有什么用?
        if(name!=0) strcpy(name,p);   //这一句是什么意思,有什么用?

    }
    ~Namelist()
    {
        delete[]name;
    }
    Namelist& operator=(char *p);
    Namelist& operator=(Namelist&);
    void display(){cout<<name<<endl;}
};
Namelist& Namelist::operator=(char *p)
//重载赋值运算符,完成用常量给对象赋值
{
    name=new char[strlen(p)+1];
    if(name!=0) strcpy(name,p);
    return *this;
}
Namelist& Namelist::operator=(Namelist& a)
//重载赋值运算符,完成类对象之间的赋值
{
    if(this!=&a)
    {
        delete name;
        name=new char[strlen(a.name)+1];
        if(name!=0) strcpy(name,a.name);
    }
    return *this;
}
int main()
{
    Namelist n1("right object"),n2("left object");
    cout<<"赋值前的数据:"<<endl;
    n1.display();
    cout<<"赋值前的数据:"<<endl;
    n2=n1;
    n1.display();
    n2.display();
    return 0;
}
搜索更多相关主题的帖子: 重载 运算符 
2009-11-19 12:45
qlc00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:157
专家分:540
注 册:2007-11-26
收藏
得分:20 
char *name;这个相当于定义类的私有成员变量
name=new char[strlen(p)+1];   //这一句话是给name分配strlen(p)+1这么大的内存空间
        if(name!=0) strcpy(name,p);   //判断name是否分配空间成功,如果成功就把p字符串赋值给name

Anything is possible!
2009-11-19 13:56
快速回复:运算符重载的问题,求助
数据加载中...
 
   



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

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