加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 是否可以描述某种原始类型的子类型?

发布时间:2020-12-16 10:09:38 所属栏目:百科 来源:网络整理
导读:考虑双原语类型.让我们声明函数如下: void foo(double); 是否可以描述可以作为参数传递给foo的用户定义类型? 解决方法 当然,虽然不是通过实际的继承,而是通过隐式转换来模拟它: #include iostreamstruct MoreDouble{ operator double() { return 42.5; }}
考虑双原语类型.让我们声明函数如下:

void foo(double);

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

解决方法

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

#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

(Live demo)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读