C++类重载操作符出错!!

来源:百度知道 编辑:UC知道 时间:2024/06/11 15:09:25
#include<iostream>

class AA
{
public:
AA(){}
~AA(){}
AA( int tt)
{
t = tt;
}
bool operator ==(AA a) const
{
return (this->get() == a.get());
}
int get() const
{
return t;
}
private:
int t;
};

int main( void )
{
AA a1(1), a2(1);
AA *a3 = new AA(3);
AA *a4 = new AA(4);
cout<<(a1==a2)<<endl; //成功
cout<<((*a3)==(*a4))<<endl;//报错,为什么涅?
bool bl = (*a3)==(*a4); //成功,为什么这样就行?

return 0;
}
是我犯傻了,呵呵。但我不知道为什么不加外面那组括号,就是写成cout<<(*a3)==(*a4)<<endl;会出错

没有报错啊
我在Linux上运行正常啊,编译器我用的是g++
答案补充:
你重载的==的优先级要低于<<的优先级,因此会先运算cout<<(*a3)然后才运算==

没有错哦,我在VC6.0上运行的,不知道你在那里运行的
结果是
1
0