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