返回类型有误吗?
Is the return type wrong?
本文关键字:返回类型 更新时间:2023-10-16
#include<iostream>
using namespace std;
class binary
{
protected:
int num;
public:
binary(int a)
{
num=a;
}
binary operator - (binary b1)
{
binary b(0);
b.num=~(b1.num-1);
return b(b.num);
}
void display()
{
cout<<"Negative is: "<<num;
}
};
int main()
{
int a;
cout<<"Enter no.: ";
cin>>a;
binary b(a);
binary b1=-b;
b1.display();
}
在上面的程序中,它表明重载运算符的返回类型应该是 int&。谁能向我解释一下这意味着什么?
返回类型是错误的吗?是的,返回b(b.num);
是错误的,它应该只返回对象b
。
你正在使用member function
重载unary
减号,它应该有零参数,因为member function
有this
指针,你可以使用这个指针来获取类data member
。
binary operator - ()
{
binary b(0);
b.num = ~(this-> num-1);
return b;
}
您不正确地声明了一元operator-
。operator-
有两种变体:一元和二元。由于this
隐式地在operator-
的左手,一元运算符不需要参数,而二进制在右手需要一个参数。因此,您声明了二进制operator-
。请尝试以下操作
binary operator - ()
{
return binary(~(num-1));
}
binary operator-(binary b1) { ... }
定义两个类型为binary
的对象之间的二进制-
运算符。
为了能够使用
binary b1=-b;
您需要重载一元-
运算符。这可以使用:
binary operator-() { ... }
我怀疑你想实现一元-
运算符。您的实现可以使用this
而不是b1
。我建议将成员函数const
,因为它不会修改this
对象。
binary operator-() const
{
binary b(~(this->num-1));
return b;
}
这也将允许您使用:
binary b1 = -binary(10);
因为你必须解析整数值但正如代码中给出的返回 b(b.num) 取而代之的是"返回 B"。
相关文章:
- 如何获取std::result_of函数的返回类型
- 奇怪的结构&GCC&clang(void*返回类型)
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 函数作为模板参数,是否对返回类型强制约束
- C++中函数的向量返回类型引发错误
- 检查函数返回类型是否与STL容器类型值相同
- 为什么返回类型中需要typename?C++
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 推导 std::vector::back() 的返回类型
- 在 c++ 中将函数返回类型指定为模板参数
- 使用 SWIG 更改生成的 CS 函数中的返回类型
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 基于返回类型的转换和过载扣除
- 当返回类型声明为 ListNode 时,我们是否可以返回 false<T>*