(7)c++ __msvc_chrono.hpp 时间类:字面量函数 operator ““h (),sizeof ( long double ),时间字面量函集合 chrono_literals{}

(19) hours operator"" h ( unsigned long long _Val ) { return _CHRONO hours ( _Val ) ; } 。 没错,这是一个函数,看起来很奇怪的函数,经过某心意言的启发和举例,知道其用法了。

在这里插入图片描述

++ 给出 测试结果:

在这里插入图片描述

++ 这样的运算符函数的定义:

在这里插入图片描述

++ 应该叫字面量运算符函数

在这里插入图片描述

++ 继续测试:

在这里插入图片描述

(20) sizeof ( long double ) ,看到源代码里出现这样的写法,测试一下,看看这个数据占据几个字节。可见,没什么变化,依然是 float 占据 4 字节 , double 占据 8 字节:

在这里插入图片描述

(21) 关于时间的所有字面量函数的定义,单独列举出来,以便看看:

// 以下内容,毫无争议的定义在 std  命名空间
inline namespace literals 
{
    inline namespace chrono_literals   // 在此命名空间里定义了一些函数,奇奇怪怪的形式的函数
    {   
        // using hours = duration<int, ratio<3600>>;  // 以  时为计量单位
        _NODISCARD constexpr _CHRONO hours operator  ""h(unsigned long long _Val)
            noexcept /* strengthened */ {             // 小时字面量 h 
            return _CHRONO hours(_Val);
        }
        // 以下开始省略函数的修饰符,突出重点

        _CHRONO duration<double, ratio<3600>> operator  ""h (long double _Val) {
            return _CHRONO duration<double, ratio<3600>>(_Val); // 这样改写函数名,语义更明显
        }

        _CHRONO minutes  operator ""min (unsigned long long _Val) {  return _CHRONO minutes(_Val); }

        _CHRONO duration<double, ratio<60>> operator ""min (long double _Val) {  // 分钟字面量 min 
            return _CHRONO duration<double, ratio<60>>(_Val);
        }

        _CHRONO seconds operator  ""s (unsigned long long _Val) {  return _CHRONO seconds(_Val); }

        _CHRONO duration<double> operator  ""s (long double _Val) {   // 秒字面量 s
            return _CHRONO duration<double>(_Val);
        }

        // using  milliseconds = duration<long long, milli>;  // 以毫秒为计量单位
        _CHRONO milliseconds  operator  ""ms (unsigned long long _Val) 
        { return _CHRONO milliseconds(_Val); }
       
        _CHRONO duration<double, milli> operator"" ms(long double _Val) 
        { 	// 毫秒字面量 ms 看函数名即可
            return _CHRONO duration<double, milli>(_Val);
        }

        // using  micro         =  ratio<1, 1000000>;
        // using  microseconds  =  duration<long long, micro>;
        _CHRONO microseconds operator ""us (unsigned long long _Val)
         { 	return _CHRONO microseconds(_Val); }

        _CHRONO duration<double, micro>  operator  ""us (long double _Val) 
        {   // 微秒字面量 us
            return _CHRONO duration<double, micro>(_Val);
        }

        _CHRONO nanoseconds operator ""ns (unsigned long long _Val) 
        { 	return _CHRONO nanoseconds(_Val); }

        _CHRONO duration<double, nano> operator ""ns (long double _Val)
        {	// 纳秒字面量 ns 
            return _CHRONO duration<double, nano>(_Val);
        }
    } // namespace chrono_literals
} // namespace literals

namespace chrono {  // 在 chrono 命名空间里包含 命名空间 chrono_literals 时间字面量函数
    using namespace literals::chrono_literals;
} // namespace chrono

(22)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值