【问题标题】:Defining a variable in a C++ function that's already an argument name在 C++ 函数中定义一个已经是参数名称的变量
【发布时间】:2014-10-15 11:28:03
【问题描述】:

在 C++ 中,如果您在函数体中定义一个与函数参数之一同名的变量,会发生什么情况?

例如:

static void f(int i)
{
    int i;

    ...

}

函数内部i的定义有什么作用吗?

它会造成任何伤害吗?

您能想到以这种方式编写函数的任何充分理由吗?

【问题讨论】:

  • 它不应该编译。本地的i 会影响参数。
  • [它]有什么作用吗?它使代码无法编译。
  • 谢谢。我想知道,因为我认为我在现有代码中看到了这一点。原来参数是varname,而局部变量是var_name。烦人,但在技术上并不坏。
  • 你可以自己尝试一下,你知道的。
  • @IsaacMoses 如果你认为你看到了,也许中间有额外的大括号。 { { int i; } } 的答案与 { int i; } 的答案不同。

标签: c++ variables arguments


【解决方案1】:

根据 C++ 标准

参数名称不得在最外层的块中重新声明 函数定义也不在任何处理程序的最外层块中 与功能尝试块相关联。

编译器会在这种情况下发出诊断消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多