std::chrono::duration<Rep,Period>::operator=

来自cppreference.com
 
 
 
 
duration& operator=( const duration &other ) = default;
(C++11 起)

赋值一个 duration 的内容到另一个。

参数

other - 复制来源的 duration

示例

#include <chrono>
#include <iostream>

int main()
{
    using namespace std::chrono_literals;

    std::chrono::hours z_hours{};
    std::chrono::seconds z_seconds{};

    z_hours = 2h; // ok,无需转换

    z_seconds = z_hours;
    // 首先,用转换构造函数来创建左操作数类型的临时对象。
    // 此构造函数隐含调用了转换函数 chrono::duration_cast<std::seconds>(z_hours)。
    // 所得的右操作数右值与左操作数类型相同,`operator=` 实施最终的赋值。

    std::cout << "时: " << z_hours.count() << '\n';
    std::cout << "秒: " << z_seconds.count() << '\n';

    z_seconds -= 42s;

//  z_hours = z_seconds; // 编译期错误(这是好事):类型不兼容。
    // 库中避免进行隐式转型,以防止潜在的精度损失。

    z_hours = std::chrono::duration_cast<std::chrono::hours>(z_seconds); // ok
    z_hours = std::chrono::duration_cast<decltype(z_hours)>(z_seconds);  // 同上

    std::cout << "hours: " << z_hours.count() << '\n';
    std::cout << "seconds: " << z_seconds.count() << '\n';

    std::chrono::duration<double, std::ratio<3600>> z2_hours{};

    z2_hours = z_seconds; // ok,未截断,隐式转型

    std::cout << "hours: " << z2_hours.count() << '\n';
}

输出:

时: 2
秒: 7200
时: 1
秒: 7158
时: 1.98833

参阅

构造新 duration
(公开成员函数)