gpt4 book ai didi

c++ - 为什么没有参数标识符的函数在 C++ 中有效?

转载 作者:IT老高 更新时间:2023-10-28 12:30:43 27 4
gpt4 key购买 nike

给定一个 C++ 函数,其参数仅为类型且没有标识符,

 void foo1(int, int, int){cout << "called foo1";}

我可以这样调用它:

int main()
{
foo1(10, 10, 10);
}

为什么这是 C++ 中的有效构造?这只是 C++ 的特性,还是这种声明实际上有某种目的?我们真的可以访问以某种方式传入的参数吗?(这种方法声明在 Java 中是行不通的。)

最佳答案

考虑一种情况,你需要提供一个满足以下原型(prototype)的函数

void dostuff(int x, int y, int z);

假设您在 2D 空间中操作,并且不要在您的实现中使用 z。你可以

void dostuff(int x, int y, int z)
{
// use x and y
}

并忽略 z,但编译器可能会发现您已定义但未使用 z 并警告您可能犯了错误。相反,您可以

void dostuff(int x, int y, int )
{
// use x and y
}

并省略z的定义。编译器会接受并默默地丢弃第三个参数,因为它知道你不想要它。

您不想因为这样的错误而简单地关闭警告

void dostuff(int x, int y, int z)
{
for (int z = 0; z < MAX; z++)
{
// use x and y and z, the local z.
}
}

名称不佳的循环索引会影响参数 z。调用者的输入现在被忽略,这可能会产生不良后果。标记 1 的眼球通常很难发现此错误,尤其是当本地 z 隐藏在复杂函数的某个深处时。

只要编译器可以在您的代码中找出可能存在的错误,请利用这一点。这意味着您的工作量会减少。

关于c++ - 为什么没有参数标识符的函数在 C++ 中有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com