微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么我的 C++ 函数只有放在 main() 之后才不起作用?

我最近学习了 C++,并决定尝试制作一个函数。但是,我的函数 func() 遇到了问题,即使事先声明,它也只有在将其放置在 main() 函数之前才有效。

如果我把它放在 main() 函数之后,系统会告诉我“没有匹配的函数可以调用 func”。

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

代码如下:

#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(); 表示具有未指定数量的任何类型参数的函数,返回一个 int

在 C++ 语言中,相同的声明 int func(); 表示一个函数没有任何参数,返回一个 int

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

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

,
int func();

int func(int x)

看到区别了吗?第一个应该是

int func(int x);

你告诉编译器 func 是一个没有参数的函数,然后当你试图用一个参数调用它时,编译器说“没有匹配的函数”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。