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

来自cppreference.com
< cpp‎ | chrono‎ | duration
 
 
 
 
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
(公开成员函数)