C++ 通过返回类型选择函数

标签 c++ function polymorphism

<分区>

我意识到标准 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();
}

参见 http://ideone.com/ehUM1

并不是说这个特定的用例(返回不同的数字)有用,但是 是这个成语的用途。

关于C++ 通过返回类型选择函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717513/

相关文章:

c++ - boost序列化多态类

spring - 以 spring-boot 代码中的多态性为条件进行重构

c++ - 如何在没有安装 CUDA 工具包的机器上运行编译后的 CUDA 代码?

C++,改变地址指针指向(指向一个常量值)

c++ - Qt mouseReleaseEvent() 没有触发?

C - 在函数中将值存储在数组中

c++ - 聚合与非聚合结构/类

c - 不会进入我的功能

c++ - 为什么会出现此错误?

java - 在编译时不知道类型的情况下可以使用方法重载吗?