c语言中的自增运算符和自减运算符的运算对象可以是什么变量,C++重载++和--(自增和自减运算符)详解...

自增++和自减--都是一元运算符,它的前置形式和后置形式都可以被重载。请看下面的例子:

#include

#include

using namespace std;

//秒表类

class stopwatch{

public:

stopwatch(): m_min(0), m_sec(0){ }

public:

void setzero(){ m_min = 0; m_sec = 0; }

stopwatch run(); // 运行

stopwatch operator++(); //++i,前置形式

stopwatch operator++(int); //i++,后置形式

friend ostream & operator<

private:

int m_min; //分钟

int m_sec; //秒钟

};

stopwatch stopwatch::run(){

++m_sec;

if(m_sec == 60){

m_min++;

m_sec = 0;

}

return *this;

}

stopwatch stopwatch::operator++(){

return run();

}

stopwatch stopwatch::operator++(int n){

stopwatch s = *this;

run();

return s;

}

ostream &operator<

out<

return out;

}

int main(){

stopwatch s1, s2;

s1 = s2++;

cout << "s1: "<< s1 <

cout << "s2: "<< s2 <

s1.setzero();

s2.setzero();

s1 = ++s2;

cout << "s1: "<< s1 <

cout << "s2: "<< s2 <

return 0;

}

运行结果:

s1: 00:00

s2: 00:01

s1: 00:01

s2: 00:01

上面的代码定义了一个简单的秒表类,m_min 表示分钟,m_sec 表示秒钟,setzero() 函数用于秒表清零,run() 函数是用来描述秒针前进一秒的动作,接下来是三个运算符重载函数。

先来看一下 run() 函数的实现,run() 函数一开始让秒针自增,如果此时自增结果等于60了,则应该进位,分钟加1,秒针置零。

operator++() 函数实现自增的前置形式,直接返回 run() 函数运行结果即可。

operator++ (int n) 函数实现自增的后置形式,返回值是对象本身,但是之后再次使用该对象时,对象自增了,所以在该函数的函数体中,先将对象保存,然后调用一次 run() 函数,之后再将先前保存的对象返回。在这个函数中参数n是没有任何意义的,它的存在只是为了区分是前置形式还是后置形式。

自减运算符的重载与上面类似,这里不再赘述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言运算符重载是指对已有的运算符重新定义其操作行为。然而,C语言并不支持运算符重载的概念。在C语言,我们不能直接通过重载运算符来定义自定义类型的加减运算。相反,我们需要使用函数来实现运算符的功能。 如果您想要对自定义类型进行加减运算,您可以通过定义相应的函数来实现。例如,如果您有一个自定义的结构体类型,您可以为该结构体定义一个加法函数和一个减法函数来实现加减运算。 下面是一个示例代码,演示如何在C语言实现自定义类型的加减运算: ```c #include <stdio.h> // 自定义结构体类型 typedef struct { int x; int y; } Point; // 加法函数 Point add(Point p1, Point p2) { Point result; result.x = p1.x + p2.x; result.y = p1.y + p2.y; return result; } // 减法函数 Point subtract(Point p1, Point p2) { Point result; result.x = p1.x - p2.x; result.y = p1.y - p2.y; return result; } int main() { Point p1 = {2, 3}; Point p2 = {4, 5}; // 调用加法函数 Point sum = add(p1, p2); printf("Sum: %d, %d\n", sum.x, sum.y); // 调用减法函数 Point diff = subtract(p1, p2); printf("Difference: %d, %d\n", diff.x, diff.y); return 0; } ``` 在上面的代码,我们定义了一个名为`Point`的自定义结构体类型,并为它定义了一个加法函数`add`和一个减法函数`subtract`。通过调用这些函数,我们可以对`Point`类型的变量进行加减运算。 因此,在C语言,我们不能直接进行运算符重载实现加减运算,但可以通过定义函数来实现相同的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值