关于类对象的赋值

gazxtzg 2003-09-29 01:52:32
CMyObject a="ABCD";
a="EFGH";
char* str=a;

为了使以上与局部产生编译错误,请问CMyObject函数头应该如何实现?
...全文
38 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤必有邻 2003-09-29
  • 打赏
  • 举报
回复
class CA
{
public:
CA(){}
CA(char * p){str=p;}
~CA(){}
public:
void operator = (char*p){str=p;str.MakeReverse();}
public:
CString str;
};

...
{
CA a("abcd");//构造函数
CA b="bcde";//构造函数
CA c;
c="ABCD";//没有operator=则是构造函数,有operator=则operator=
}
第三句不可能实现
bluebohe 2003-09-29
  • 打赏
  • 举报
回复
看一下CString类的源代码就知道了
bluebohe 2003-09-29
  • 打赏
  • 举报
回复
第一句的实现,注意初值要用一个参数的构造函数实现
CMyObject(const char *str);
第二句的实现,注意这时候要重载等号,返回值应该是this指向的对象
const CMyObject& operator =(const char *str);
第三句的实现,这时候要重载char*操作符,返回值是char*
operator char*() const;
akiko 2003-09-29
  • 打赏
  • 举报
回复
CMyObject
{
...
CMyObject(const char*);//CMyObject a="ABCD";
CMyObject& operator=(const char*);//a="EFGH";
operator char*() const;//char* str=a;
}
syl5005 2003-09-29
  • 打赏
  • 举报
回复
用构造函数吧.
Microsoftadherent 2003-09-29
  • 打赏
  • 举报
回复
也可以使用重载操作符,但是我觉得还是拷贝构造函数好一些。
Microsoftadherent 2003-09-29
  • 打赏
  • 举报
回复
第一二句我可以实现,第三句不知道如何实现,推荐使用拷贝构造函数,我可以给你个DEMO,
如果你需要。
gazxtzg 2003-09-29
  • 打赏
  • 举报
回复
我想问的是该如何实现CMyObject,为了让以上语句编译不产生错误
windows_editor 2003-09-29
  • 打赏
  • 举报
回复
//-----------CMkstruct.cpp-----------------
#include "stdafx.h" //这里加了没
#include "mkStruct.h"

CMkStruct::CMkStruct(void)
{
}

CMkStruct::~CMkStruct()
{
}

int CMkStruct::getValue()
{
return event;
}
void CMkStruct::setValue(int m)
{
event = m;
}



//----------CMkStruct.h------------
class CMkStruct
{
private:
int event;
public:
CMkStruct(void);
~CMkStruct(void);

int getValue(void);
void setValue(int m);
};

----------------------
CMkStruct myStruct;
myStruct.setValue(10);
myStruct.getValue();

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧