c++ - 前缀和后缀运算符 C++

标签 c++ operators postfix-operator prefix-operator

class compl{
    float re,im;

public:
    compl(float r, float i)
        {re=r; im=i;}
    compl& operator++()
        {++re; return*this;} //(1)
    compl operator++(int k){
        compl z=*this; re++; im+=k; return z;} //(2)
    friend compl& operator--(compl& z)
        {--z.re; return z;}
    friend compl operator--(compl& z,int k)
        {compl x=z; z.re--; z.im-=k; return x;}
};

(1) 为什么我们必须通过引用返回当前对象?据我了解,引用只是某物的别名。

(2) 为什么要把当前对象保存在z中,然后改变对象返回未改变的z?这样做,我们将返回未增加的值。是不是因为后缀运算符的工作方式(它返回旧值,然后增加它)

最佳答案

(1) 您不必这样做,但它是惯用的,因为它允许链接运算符或调用。

(2) 是的,postfix 应该返回之前的值。

关于c++ - 前缀和后缀运算符 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29943920/

相关文章:

c++ - "operator bool() const"是什么意思

c++ - 重载全局类型转换运算符

javascript - 注释中的条件运算符 floatval

c - 后缀 prefix++ 和二进制 & 运算符的优先级

java - 这里发生了什么 : sum += i++;?

c++ - 为什么我们在解析器文件中定义 union 时使用复杂类的指针?

c++ - 在指针上设置指针的函数

c++ - 包含头文件

立即减法和后减法时出现困惑

c++ - c++ 程序员应该了解 linux 文件系统上的哪些重要目录?