gpt4 book ai didi

C++ 覆盖逻辑失败

转载 作者:行者123 更新时间:2023-11-28 02:53:03 25 4
gpt4 key购买 nike

大家好,我的一种方法有问题(重写运算符,~)当我尝试打印我的对象时,发生了意想不到的事情......需要一些帮助

这是我的全部代码

#include"stdafx.h"
#include<iostream>
using namespace std;

class complex
{
private:
double Re, Im;
public:
complex(double _Re = 0, double _Im = 0) : Re(_Re), Im(_Im){} //class constructor

void print() const
{
cout << Re << " + " << "i(" << Im << ")" << endl;
}
complex operator~() const
{
return (Re, -Im);
}
};

void main()
{
complex x(2, 3);
x.print();
(~x).print();
}

如果我编译它,我会在屏幕上得到正确的复数,但是当我尝试执行 ~ 覆盖的运算符时,它会向我显示 - -3 + 0 i... .真的需要一些帮助。谢谢

很抱歉发布了如此脑残的问题,但我自己无法弄清楚......一直在查看该死的代码 30 多分钟,我看不出我哪里错了。

最佳答案

你缺少一个 complex(Re, -Im);在:

complex operator~() const
{
return (Re, -Im);
}

因此您返回一个隐式转换的complex(-Im)(逗号运算符)。您可以使用显式构造函数来避免这样的陷阱。

关于C++ 覆盖逻辑失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22620910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com