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

来自cppreference.com
< cpp‎ | chrono‎ | duration
 
 
工具库
语言支持
类型支持(基本类型、RTTI)
库功能特性测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)

 
 
 
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
(公开成员函数)