c++ - 如何确保将对象分配给变量
问题描述
我有一门课来测量和记录范围内的时间消耗
class MeasureTime {
public:
MeasureTime(const std::string log_message) : log_message(log_message), t_start(std::chrono::steady_clock::now()){};
~MeasureTime() {
const auto t_end = std::chrono::steady_clock::now();
const auto duration = std::chrono::duration_cast<std::chrono::duration<double>>(t_end - t_start).count();
std::cout << "Time measurement: " << log_message << " took " << duration " seconds.\n";
}
private:
const std::chrono::_V2::steady_clock::time_point t_start;
const std::string log_message;
};
如果我有这样的范围,一切正常。
{
MeasureTime measureTime("message");
// do something
} // The destructor of MeasureTime is called here
另一方面,如果我只是构造对象而不将其分配给变量,则立即调用构造函数并且时间测量失败。
{
MeasureTime("message"); // The destructor of MeasureTime is called immediately here
// do something
}
如何确保将创建的对象分配给对象?
解决方案
推荐阅读
- python - 从数据框中删除“days 00:00:00”
- scala - 使用 IntelliJ 从 Azure EventHub 获取 Scala 中时间窗口的数据
- sql - 使用时间戳和当前日期每小时和每天从 Oracle 数据库中获取数据
- progressive-web-apps - 我想更新我的 PWA 应用的现有徽标
- javascript - 如何处理单个项目的加载 redux 状态以显示加载指示器
- swift - 导航视图将全屏转换为具有角半径的视图
- reporting-services - Setvalue 显示第一个非零值
- java - 应该用通用接口替换文字
- android - 使用 pushmodelaasync 方法时无法在 android 中播放视频,但它在 PushAsync 方法中工作
- r - 在图中,表示“0.0-2.0”的部分远离中心,而“10-17”则靠近中心。如何反条件?