gpt4 book ai didi

c++ - 用户定义类型行为的后增量运算符

转载 作者:搜寻专家 更新时间:2023-10-31 00:02:26 25 4
gpt4 key购买 nike

我正在阅读一些书,我决定为用户定义的类型编写我自己的后增量运算符的实现。这是代码。

#include <iostream>

using namespace std;

class X
{
int a;

public:
X(int x=1):a(x){}

X operator++(int)
{
X oldobj = *this;
(*this).a++;
return oldobj;
}

int get(){return a;}

};

int main()
{
X obj,obj2;
obj++ = obj2;
cout<< obj.get() << endl;
return 0;
}

我希望输出为 1,因为 obj2 的值将在增量完成后被复制。但输出是 2

想法?

附言我知道这个代码不会赢得任何奖牌及其谬误。这只是为了我的理解。顺便说一下,++obj = obj2 返回 1;

行为是否未定义?

最佳答案

正如您的语法告诉您的那样,后缀运算符返回旧值的拷贝,因此这是递增的,而不是您的对象。

基本上,

obj++ = obj2;

将这样做:

X tempObj = obj;
obj ++;
tempObj = obj2;

您正在将 obj2 分配给一个临时变量。

关于c++ - 用户定义类型行为的后增量运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8048623/

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