第11章练习题第7题(就是最后一题啦 )
要求设计这样一个类
class Complex
{
int One;
int Two;
public:
.
.
.
};
这个类用于表示复数,One是实数部分Two是虚数部分,即一个复数可以表示为(3,4i)这种形式
在重载这个类相关的运算符号,有一个符号 “~” 实现类(复数)的共轭,
即有 A =(3,4i),~A 的值为(3,-4i);
在这之前遇到的操作符重载,都是在语句中,操作符2边都有值(左或右),但这个操作符重载一边是没值的。。。。
然后我去网上找了一下答案,有个人是这样实现的
Complex Complex::operator~()const
{
Complex A;
A = *this;
A.two = -A.two;
return A;
}
在程序调用cout<<~A;这个语句的时候能够正确实现他的功能 (这里<<也重载过)
然后问题来了。。。
假如我要实现零一个操作符重载A(3,4i)
A~的结果为(-3,4i)
我想问下这个操作符重载函数该怎么写。。。。。
4 个解决方案
#1
c++的~运算符只能是在A前面吧,好像没有A~这种用法,所以也就不能这么重载。
运算符重载必须按照原有的语法才行。
#2
标准规定什么运算符能够重载,以及重载必须遵循的语法,很可惜没有 identifier ~ 这样的。
#3
要尊重操作符本身的用法,不能破坏原操作符的规则。即使能够使用的,也要最好按照运算符的意义来用。
#4
~是一元操作符,它本身就只能放在前面。它不像++,可以放前面又可以放在后面。
#1
c++的~运算符只能是在A前面吧,好像没有A~这种用法,所以也就不能这么重载。
运算符重载必须按照原有的语法才行。
#2
标准规定什么运算符能够重载,以及重载必须遵循的语法,很可惜没有 identifier ~ 这样的。
#3
要尊重操作符本身的用法,不能破坏原操作符的规则。即使能够使用的,也要最好按照运算符的意义来用。
#4
~是一元操作符,它本身就只能放在前面。它不像++,可以放前面又可以放在后面。