正在做C++PrimerPlus编程练习题,问题来了。。。

时间:2023-02-12 22:55:16
题目是C++PrimerPlus中文版第六版
第11章练习题第7题(就是最后一题啦 正在做C++PrimerPlus编程练习题,问题来了。。。

要求设计这样一个类
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


引用 楼主 qazaq407 的回复:
假如我要实现零一个操作符重载A(3,4i)
A~的结果为(-3,4i)
我想问下这个操作符重载函数该怎么写。。。。。

c++的~运算符只能是在A前面吧,好像没有A~这种用法,所以也就不能这么重载。
运算符重载必须按照原有的语法才行。

#2


标准规定什么运算符能够重载,以及重载必须遵循的语法,很可惜没有 identifier ~ 这样的。

#3


要尊重操作符本身的用法,不能破坏原操作符的规则。即使能够使用的,也要最好按照运算符的意义来用。

#4


~是一元操作符,它本身就只能放在前面。它不像++,可以放前面又可以放在后面。

#1


引用 楼主 qazaq407 的回复:
假如我要实现零一个操作符重载A(3,4i)
A~的结果为(-3,4i)
我想问下这个操作符重载函数该怎么写。。。。。

c++的~运算符只能是在A前面吧,好像没有A~这种用法,所以也就不能这么重载。
运算符重载必须按照原有的语法才行。

#2


标准规定什么运算符能够重载,以及重载必须遵循的语法,很可惜没有 identifier ~ 这样的。

#3


要尊重操作符本身的用法,不能破坏原操作符的规则。即使能够使用的,也要最好按照运算符的意义来用。

#4


~是一元操作符,它本身就只能放在前面。它不像++,可以放前面又可以放在后面。