是否有可能描述某种原始类型的子类型?

3 c++ primitive types

考虑double原始类型.让我们声明函数如下:

void foo(double);
Run Code Online (Sandbox Code Playgroud)

是否可以描述可以foo作为参数传递的用户定义类型?

Lig*_*ica 7

当然,虽然不是通过实际的继承,而是通过隐式转换来模拟它:

#include <iostream>

struct MoreDouble
{
   operator double() { return 42.5; }
};

void foo(double x)
{
   std::cout << x << '\n';
}

int main()
{
   MoreDouble md;
   foo(md);
}

// Output: 42.5
Run Code Online (Sandbox Code Playgroud)

(现场演示)

这是一个好主意是另一个问题.我不喜欢一般的隐式转换,所以在使用之前确保你真的需要它.