gpt4 book ai didi

c++ - C 编译器出错,但 C++ 编译器不出错

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:19 25 4
gpt4 key购买 nike

int a=5;
++a=a;

请找出上面的代码段。该代码适用于 c++(g++) 编译器,但在使用 c (gcc) 编译器时显示错误。我可以知道这是什么原因吗?c 编译器中的错误是“需要左值作为赋值的左操作数”。

最佳答案

C++ 中存在运算符重载(您也可以重载预自增),因此为了实现一些额外的目标,预自增运算符在 C++ 中返回左值。

例如:

您的类可能会实现一些指针功能并且可能需要:

  • 指针移动的预增量;
  • 用于赋值给指针值(地址值)的赋值运算符。

预增量在这种情况下可能很有用。

摘要代码示例:

class MyIntPtr {
int *val;
...
public:
MyIntPtr(int *p) { ... };
MyIntPtr &operator++() { ++val; return *this; };
void operator=(int i) { *val = i; }
...
};

...

int array[10];
MyIntPtr ptr(array);

for(int i = 0; i < sizeof array; ++i)
++ptr = i;

关于c++ - C 编译器出错,但 C++ 编译器不出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454983/

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