关于引用做返回值的问题
#define _CRT_SECURE_NO_WARNINGS#include "iostream"
using std::cout;
using std::cin;
using std::endl;
class Complex
{
private:
int a;
int b;
public:
Complex(int a, int b)
{
this->a = a;
this->b = b;
}
public:
void printCom()
{
cout << this->a << "" << this->b << endl;
}
public:
friend Complex& operator++(Complex &c);
public:
Complex& operator--()
{
this->a--;
this->b--;
return *this;
}
};
Complex& operator++(Complex &c)
{
c.a++;
c.b++;
return c;
}
void main()
{
Complex c(11, 22);
++c;
c.printCom();
--c;
c.printCom();
system("pause");
}
问题:Complex& 返回一个引用究竟是啥子意思?为啥Complex& 返回的是c有时返回*this*this应该是对象吧 你看的哪个教材?听我的,把那个教材撕了,换一个
正确的++,--运算符重载只有下面这4条语句
T &operator++();
const T operator++(int);
T &operator--();
const T operator--(int); 人造人 发表于 2020-1-21 17:22
你看的哪个教材?听我的,把那个教材撕了,换一个
正确的++,--运算符重载只有下面这4条语句
我看的是 传智 扫地僧讲的视频 讲的很好可能是视频有点老了 你这个代码是哪本书里的 我去看看 人造人 发表于 2020-1-21 17:22
你看的哪个教材?听我的,把那个教材撕了,换一个
正确的++,--运算符重载只有下面这4条语句
你这个运算符重载 是成员函数吧 我在试着用成员函数 和友元函数都进行运算符重载 琴长不过时光 发表于 2020-1-21 17:25
你这个运算符重载 是成员函数吧 我在试着用成员函数 和友元函数都进行运算符重载
为什么要在类外重载或者在其他类中重载这两个运算符
这可是++,--运算符,是要改变当前对象的
首先,在类外重载一定是不可行
在其他类中以友元函数的形式重载也不妥(从可移植的角度来讲)
More Effective C++ 能不用友元函数重载就别用。可能会发生一些非预期的类型转化,在火车上暂时没法实验,不过几天前我被这东西坑惨了。 本帖最后由 Croper 于 2020-1-21 18:47 编辑
https://fishc.com.cn/forum.php?mod=viewthread&tid=154100 顶
页:
[1]