一个c++的问题

[复制链接]
查看11 | 回复3 | 2008-12-23 17:00:19 | 显示全部楼层 |阅读模式
有一个类
class A
{
pulic:

char *p;

A(void)

{

p = new char[100];

};

~A(void)

{

delete[] p;

};

A oprator + (const A &a);
};
A A::oprator + (const A &a)
{

A temp;

//重新构造一个temp

return temp;
}
这样做正确吗?
谢谢大家这么热心,重载“+“号只是简单地说明一下问题,我始终觉得某些地方不妥,a+(*this)之后返回一个temp,假设有A a,b,c;
c = a+b;在返回temp时,是将temp里的成员变量值简单复制给c?
如果这样,temp会被析构回收吗?如果回收了,那c的p不是被delete掉了吗?

回复

使用道具 举报

千问 | 2008-12-23 17:00:19 | 显示全部楼层
C++允许返回类的对象。单纯看语法,A temp; //重新构造一个temp return temp; 是可以的。但是,这里,你在class A类定义还不完善之前就直接使用A的对象是不行的。这个函数A oprator + (const A &a); 是不行的。还有,A(void) { p = new char[100]; };//这里为什么加分号?????在函数结束后的{}后不加分号。在类的定义后加分号。如:class A{};//这里加分号...
回复

使用道具 举报

千问 | 2008-12-23 17:00:19 | 显示全部楼层
这样做没用任何用处.const A &a这个参数基本没用,并且里面是重新定义的temp,不管哪个对像用这个重载都返回一样的结果....
回复

使用道具 举报

千问 | 2008-12-23 17:00:19 | 显示全部楼层
可以,不过没有什么意义,既然重载了+号就是要实现类对象的+法运算...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行