【发布时间】:2011-04-20 23:26:02
【问题描述】:
当出现不明确的默认参数时,C++ 编译器会做什么?例如,假设有一个函数,例如:
void function(int a = 0, float b = 3.1);
void function(int a, float b =1.1, int c = 0);
以上是否被认为是模棱两可的?如果不是,编译器在调用function1(10) 之类的东西时会做什么(函数如何精确匹配)?
谢谢!
【问题讨论】:
-
你的函数有不同的标识符。没有歧义。你是不是想把它们都命名为
function? -
@JoshD:不太可能。第一个有 2 个参数,第二个 - 3。
-
@Andrey:这个问题没有任何意义,除非有是模棱两可的,所以乔希的评论是恰当的。
-
@user466152:如果你想知道编译器是否发现函数调用有歧义,只需编译一个测试程序问他。
-
@AndreyT:在 C++ 中,您可以拥有同名的不同函数,前提是它们的签名(本质上是参数和类型)不同。如果他们做了根本不同的事情,那是一种糟糕的风格,但语言中没有任何东西将它们联系在一起。
标签: c++ compiler-construction default-value overloading