gpt4 book ai didi

c++ - std::basic_fstream 和 std::unique_lock 的接口(interface)设计

转载 作者:行者123 更新时间:2023-11-28 05:57:09 25 4
gpt4 key购买 nike

我正在比较这两个类,因为它们都与其他事物相关联。 std::basic_fstream 必须与文件相关联,而 std::unique_lock 必须与互斥锁相关联。因此,提供一个 open() 方法似乎是合理的。尽管如此,std::unique_lock 仍未提供此类方法。惰性初始化无论如何都可以通过 move 分配来执行。因此,提供 open() 方法似乎是多余的。另一方面,std::basic_fstream 确实提供了一个open() 方法。 std::basic_fstream 在 C++11 之前就已经存在了,它是那时执行惰性初始化的唯一方法。抛开向后兼容性的考虑,std::basic_fstream::open() 会被删除吗?或者它仍然需要存在,因为操作实际上可能会失败?请注意,打开(关联)操作始终以 std::unique_lock 成功(不要与锁定操作混淆)。

最佳答案

你的最后一句话实际上包含一个提示:“open (associate) operation always succeed with std::unique_lock”。这使得将开放性声明为类不变性、在构造函数中建立它并在罕见故障时抛出异常变得很方便。与文件相比:打开它们可能并且确实会失败,因此将开放性声明为类不变性在那里不起作用。

关于c++ - std::basic_fstream 和 std::unique_lock 的接口(interface)设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33932514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com