美文网首页
C++函数多返回值

C++函数多返回值

作者: 松竹1981 | 来源:发表于2018-04-23 22:46 被阅读0次

在Go中,一个函数可以返回多个值。许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息。比如下面是一个Go打开文件的常用写法

file, err := os.Open(dataFile)
if err != nil {
    // error handle
}

函数返回多个值简洁明了,错误信息显示表达。不像C语言API,比如recv返回-1隐示表示发生了某种错误。

C++在语法层面规定函数最多只能有一个返回值,一般要返回多个值时,采用如下两种做法:

  • 返回一个pair或结构体
  • 出参返回,使用引用或指针

这两种做法都不够直观,其实在C++17语言中,我们可以使用返回tuple和decomposition declarations语法来模拟Go语言函数多返回值功能。如下所示:

#include <iostream>
#include <tuple>
#include <string> 

std::tuple<std::string, bool> foo()
{
    return std::make_tuple("hello", true);
}

int main()
{
    auto [value, exists] = foo();
    if (exists) {
        std::cout << value << std::endl;
    }
    return 0;
}

虽然可能还是比不上Go直观,但基本上已经够清晰的了,只是编译的时候要加上-std=c++17。

相关文章

  • C++函数多返回值

    在Go中,一个函数可以返回多个值。许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信...

  • C++ RVO

    刷知乎的时候看到这个问题,C++函数返回值拷贝问题?,觉得有趣,因此写了这篇博客。 函数如何返回值 函数返回值的传...

  • 通过汇编看golang函数的多返回值

    golang这门语言,有个比较好的特性,就是支持函数的多返回值。想C,C++,Java等这些语言,是不支持函数多返...

  • C++plus6th 第7章函数(上)

    第七章 函数(模块) 1. 关于函数返回值 在C++中,函数分为有返回值和无返回值两种。函数可以返回除数组之外的任...

  • C/C++ 返回值、参数列表、缺省等区别

    一、返回值 C中:如果函数未指定返回值类型,则默认为int C++中:如果一个函数没有返回值,返回值类型必须指定为...

  • Swift-函数

    函数的定义与调用 无参数函数,有返回值(返回值类型String) 多参数函数,有返回值(返回值类型String) ...

  • c++自定义函数

    c++自定义函数可以分作两种 有返回值和无返回值,还有无参数函数 函数一般包括1.函数原型,一般函数原型写在mai...

  • C++基础知识点总结

    1.重载函数是否能够通过函数返回值的类型不同来区分? 不可以。因为在C++编程中,函数的返回值可以忽略(不使用...

  • swift学习笔记(6)--- 函数

    1、函数的定义与调用 2、函数参数与返回值 无参数函数 多参数函数 无返回值函数 多重返回值函数 可选元组返回类型...

  • 函数

    函数初识 函数的参数 函数的多个参数 可变参数 参数传递 函数的返回值 函数的多返回值 return语句 函数中变...

网友评论

      本文标题:C++函数多返回值

      本文链接:https://www.haomeiwen.com/subject/qfbrlftx.html