相关疑难解决方法(0)

从C++函数返回多个值

有没有从C++函数返回多个值的首选方法?例如,假设一个函数分割两个整数并返回商和余数.我经常看到的一种方法是使用参考参数:

void divide(int dividend, int divisor, int& quotient, int& remainder);
Run Code Online (Sandbox Code Playgroud)

一种变化是返回一个值并通过引用参数传递另一个值:

int divide(int dividend, int divisor, int& remainder);
Run Code Online (Sandbox Code Playgroud)

另一种方法是声明一个包含所有结果的结构并返回:

struct divide_result {
    int quotient;
    int remainder;
};

divide_result divide(int dividend, int divisor);
Run Code Online (Sandbox Code Playgroud)

这些方式中的一种通常是首选,还是有其他建议?

编辑:在现实世界的代码中,可能会有两个以上的结果.它们也可以是不同类型的.

c++

219
推荐指数
13
解决办法
30万
查看次数

在C++和Java中只有一个返回值的原因是什么?

通常我会看一眼这个事实并接受它为"这就是轮子旋转的方式",但今天我想知道它来自何处:为什么一个函数只有一个返回(参考)值?

为什么不能,函数返回多个值会变得困难或不明智?是因为对象以及您应该如何期望始终以对象的引用形式返回数据包?

如果你看到一个声明函数作为一个契约,它说明了如何调用一个函数,它应该采用哪些参数,以及它具有哪种返回值类型,那么我没有看到背后的逻辑只有一个返回值,因为你可以申请相反的逻辑相反(因此创建了多个返回值的合约).

基于我可以看到的逻辑的唯一原因是,如果一个函数返回多于一个的东西,它还应该操作多于1个的东西超过1个原因,这违背了一个函数应该只做一件事的哲学.如果有一件事是操纵一个对象并返回另一个对象那么它就有意义了,你可以用操纵对象返回一个引用值.

那么为什么存在这种限制呢?

c++ java

30
推荐指数
6
解决办法
4766
查看次数

为什么MIPS汇编器有多个寄存器用于返回值?

我刚开始学习MIPS汇编程序,并意识到返回值有两个寄存器.

首先,我认为它是实现的,因为有些语言可能会返回多于一个值(但是然后将寄存器数量限制为2并没有多大意义).正如问答所暗示的那样,大多数现代编程语言只使用一个返回值,虽然强调"现代"这个词意味着过去有一些语言返回多个函数值,这就是MIPS有2个返回寄存器的原因,如果是的话,为什么只有2?

assembly mips

2
推荐指数
1
解决办法
1273
查看次数

标签 统计

c++ ×2

assembly ×1

java ×1

mips ×1