<分区>
我意识到标准 C++ 只根据参数类型而不是返回类型来选择函数。即我可以做类似的事情:
void func(int);
void func(double);
但不是
double func();
int func();
在前者中,它是明确的,在后者中,它是模棱两可的。是否有任何扩展可以让我告诉 C++ 通过返回类型来选择要使用的函数?
谢谢!
<分区>
我意识到标准 C++ 只根据参数类型而不是返回类型来选择函数。即我可以做类似的事情:
void func(int);
void func(double);
但不是
double func();
int func();
在前者中,它是明确的,在后者中,它是模棱两可的。是否有任何扩展可以让我告诉 C++ 通过返回类型来选择要使用的函数?
谢谢!
最佳答案
您不能在同一范围内拥有两个具有相同名称和签名(即参数类型)的函数。然而,您可以创建一个函数,该函数的行为会根据您将结果分配给哪个变量而有所不同,如:
int x=f();
double x=f(); // different behaviour from above
通过使 f()
返回一个带有重载转换运算符的代理。
struct Proxy
{
operator double() const { return 1.1; }
operator int() const { return 2; }
};
Proxy f()
{
return Proxy();
}
并不是说这个特定的用例(返回不同的数字)有用,但是 是这个成语的用途。
关于C++ 通过返回类型选择函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717513/