std::chrono::duration<Rep,Period>::operator=
来自cppreference.com
| |
(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 (公开成员函数) |