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

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

概述考虑双原语类型.让我们声明函数如下: void foo(double); 是否可以描述可以作为参数传递给foo的用户定义类型? 当然,虽然不是通过实际的继承,而是通过隐式转换来模拟它: #include <iostream>struct MoreDouble{ operator double() { return 42.5; }};void foo(double x){ 考虑双原语类型.让我们声明函数如下:

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)

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

总结

以上是内存溢出为你收集整理的c – 是否可以描述某种原始类型的子类型?全部内容,希望文章能够帮你解决c – 是否可以描述某种原始类型的子类型?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1218057.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存