繁体   English   中英

为什么我的C++ function,只有放在main()之后,不起作用?

[英]Why does my C++ function, only when it's placed after main(), not work?

我最近拿起了 C++ 并决定尝试制作 function。 但是,我的 function func()遇到了问题,即使事先声明,它也只有放在main() function 之前才有效。

如果我将它放在main() function 之后,系统会告诉我“没有匹配的 function 用于调用func ”。

注意:另一方面,function func2即使放在main() function 之前或之后也可以工作。

所以这里是代码:

#include <stdio.h>
#include <iostream>

void func2();

int func();

int main()
{
  int y=2;

  std :: cout << "Hello World\n" << func(y) << "\n";
  func2();
  return 0;
}

int func(int x)
{
 x *= 2;
 return x;
}

void func2()
{
 std :: cout << "Hello there";
}

在 C 语言中,声明int func(); 表示function 具有未指定数量的 arguments 任何类型,返回一个int

在 C++ 语言中,同样声明int func(); 表示没有任何arguments 的 function,返回一个int

因此,在 C++ 中,带有int类型参数的func定义是重载 对于编译器,它是一个不同的function,它在原始代码中没有在使用前声明,所以会发出错误。

但是在 C 中,这是完全合法的。

int func();

int func(int x)

看到不同? 第一个应该是

int func(int x);

您告诉编译器func是没有 arguments 的 function,然后当您尝试使用一个参数调用它时,编译器会说“没有匹配的函数”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM