C ++中的函数是否有任何默认返回类型?

时间:2019-06-06 12:36:29

标签: c++ c++11

我最近读到C ++中所有函数的默认返回类型为int。谷歌搜索并不能帮助我确认这一点。

所以:

  1. 实际上是C ++ int中所有函数的默认返回类型吗?
  2. 如果没有,那么C ++中的函数是否存在任何此类默认返回类型?如果是这样,那是什么?

2 个答案:

答案 0 :(得分:8)

  
      
  1. 真的是C ++ int中所有函数的默认返回类型吗?
  2.   

否。

  
      
  1. 如果没有,那么C ++中的函数是否存在任何此类默认返回类型?
  2.   

否。


让编译器帮助您。如果您尝试按照以下方式做某事,

noReturnType(int a, int b)
{
   std::cout << a + b << "\n";
}

您会得到例如

error: C++ requires a type specifier for all declarations
noReturnType(int a, int b)  
^

,可以通过在函数声明/定义(或您打算返回的任何类型)前面添加void来缓解。可能混淆的可能是让编译器推断返回类型的能力。这个示例在C ++ 14下可以很好地编译:

auto deduceReturnType(int a, int b)
{
    return a + b; // return type is int
}

但这与默认返回类型无关,也不能在此处省略auto

答案 1 :(得分:2)

K&R C隐含了int

//assumed to return int
main(argc, argv) 
    char *argv[];
    //not declaring argc's type so it's implicitly assumed to be int
{ return 0; }

ANSI C和C ++没有。