std::chrono::duration<Rep,Period>:: operator=
From cppreference.net
C++
Date and time library
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::chrono::duration
| Member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non-member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper classes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
duration
&
operator
=
(
const
duration
&
other
)
=
default
;
|
(自 C++11 起) | |
将一个
duration
的内容赋值给另一个。
参数
| 其他 | - |
要复制的
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; // 正确,无需类型转换 z_seconds = z_hours; // 首先使用转换构造函数创建`lhs`类型的临时对象。 // 该构造函数隐式调用转换函数 // chrono::duration_cast<std::seconds>(z_hours)。生成的`rhs`右值 // 与`lhs`类型相同,最后通过`operator=`完成赋值操作。 std::cout << "hours: " << z_hours.count() << '\n'; std::cout << "seconds: " << z_seconds.count() << '\n'; z_seconds -= 42s; // z_hours = z_seconds; // 编译时错误(符合预期):类型不兼容。 // 库避免隐式转换以防止潜在的精度损失。 z_hours = std::chrono::duration_cast<std::chrono::hours>(z_seconds); // 正确 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; // 正确,无截断,隐式转换 std::cout << "hours: " << z2_hours.count() << '\n'; }
输出:
hours: 2 seconds: 7200 hours: 1 seconds: 7158 hours: 1.98833
参见
|
构造新的 duration 对象
(公开成员函数) |