读书人

在VC中重载关系运算符quot;lt;quot;时为什么会出

发布时间: 2012-02-20 21:18:24 作者: rapoo

在VC中重载关系运算符"<"时为什么会出错?
#include <iostream>
#include <string>
using namespace std;

class CBridge
{
public:
CBridge(string cs);
CBridge(const CBridge &obj);
public:
~CBridge(void);
public:
char *suit,*symbol;
int num;
public:
bool operator> (CBridge obj);
};

CBridge::CBridge(string cs)
{
suit=new char;
symbol=new char;

*suit=cs[0];
*symbol=cs[1];
num=(int)cs[1];
}

CBridge::CBridge(const CBridge &obj)
{
suit=new char;
*suit=*obj.suit;

symbol=new char;
*symbol=*obj.symbol;
}

bool CBridge::operator> (CBridge obj)
{
return (num> obj.num);
}
int main()
{
CBridge a( "S3 "),b( "HA ");

cout < <(a> b);

return 0;
}

发现函数CBridge::operator> ()中 num> obj.num 指代不明 obj时指代b呢还是a?

[解决办法]
应该加上
析构函数
析构函数是不带参数的 有必要说明一个void参数吗

CBridge::~CBridge()
{
delete suit;
delete symbol;
}

读书人网 >C++

热点推荐