为什么方法不能返回多个值

Dil*_*eep 5 c c++ java programming-languages

好奇的是,对于java,c,c ++等语言中的方法有多个返回值有任何技术限制,或者仅限于规范?在汇编语言中我理解callee可以弹出一个值来注册.

Bil*_*eal 19

  1. 因为在C的时代,有一个用于保存返回值的寄存器.
  2. 因为如果你需要更多的值,你可以只返回一个struct引用(在Java/C#中)或指针.
  3. 因为您可以使用out参数.

允许多个返回值会增加复杂性,而且它只是简单地解决了.它没有理由在那里.(实际上,在C++中你可以返回一个tuple(来自TR1,C++ 11或boost),它实际上是多个返回值)


Naw*_*waz 9

它的设计,因为没有必要在return语句中允许多个值.您始终可以使用所有需要的成员定义结构,并创建结构的实例并将其返回.简单!

例,

struct Person
{
   std::string Name;
   int Age;
   std::string Qualification;
   //...
};

Person GetInfo()
{
    Person person;
    //fill person's members ...
    return person;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用std::pair,std::vector,std::map,std::list 等等.在C++ 0x中,您也可以使用std::tuple它.

  • 是的,但是你仍然有一个返回单个值的函数,即使该单个值恰好是一个结构. (2认同)

Pet*_*háč 6

如果精灵只给你一个愿望,你可以希望有任何数量的愿望.它只与方法中的一个返回值相同.您可以使用返回值作为指向充满属性的对象所在的地址的指针,然后查询这些属性(属性)......这种方式确实没有限制.:-)

有趣的编码和许多快乐的回报:-)