之前执行的内容,返回或 ++
What executes earlier, return or ++?
class x
{
public:
int y;
x& operator++(int);
};
我想要 foo(),它的工作原理是:
int& foo()
{
int& ret_val = x.y;
x++;
return ret_val;
}
但看起来像:
int& foo()
{
return (x++).y;
}
这可能吗?之前执行什么,返回还是++?
好的,谢谢你的回答。
"而是增量前状态的对象的副本(即 - 您的 X& 运算符++(int) 不遵循约定)"我可以按照约定编写运算符++(int)吗?怎么写?
那我可以写这样的函数吗:
int foo() {return (x++).y;}
++
在返回之前执行,但返回值在++
之前是固定的。 我开始写出等效的代码,但后来我意识到你的中间示例已经和你想做的一样了。
++ 运算符将在前面执行。
你的最终实现是错误的,不应该编译,因为你试图形成一个对临时的非常量引用。 有很多悬空引用的情况,所有这些都是不正确的,但至少编译器可以捕获这一情况。
相关文章:
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 在 c++ 中从执行的 shell 命令获取返回状态的安全方法是什么?
- 获取上次执行的返回语句的行
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- readAll() 或 readAllStandardOutput() 在执行之前也返回一个空字符串
- 编译器未强制执行返回协定
- 如果发生错误,则返回错误值,否则,继续执行函数
- 无法从Linux,C ++执行"my_script" python脚本"main(filename)"功能;pModule = PyImport_Import(pName);返回空值
- 从通过DLSYM执行的函数返回unique_ptr
- 如何在执行期间终止(或返回)具有结构类型的自动函数
- 有没有办法为任何函数编写通用代码,以便它可以(异步)执行并从线程池中获得返回值?
- 在返回另一个函数的函数中执行程序期间出错
- C 编译器可以执行用于返回值的命名const变量的RVO
- 函数返回本地变量,尽管变量不超出范围,没有编译器问题,并且代码执行
- 在大型数据集上执行时不返回 SQL
- ShellExecute 返回成功,但不执行文件
- 现代C++执行函数返回指针的方法
- 当函数在 GCC 中没有任何返回时,如何强制执行错误?
- 程序的本地执行不会重新返回运输返回.远程执行确实