yes*_*aaj 1 c++ winapi copy-constructor
我有一个HANDLE作为我班上的成员说它是使用win32 api的文件句柄,我如何在复制构造函数中处理它,我的班级是否负责照顾释放它?
您遇到此问题是因为您正在尝试为包含抽象资源(而不是值)的类定义复制构造函数.您必须从复制构造函数中确定实际需要的行为.也许你甚至不希望这个类首先是可复制构造的.
例如,假设您的类封装了一个打开的只读文件.然后,复制构造函数调用DuplicateHandle(由Matt建议)和析构函数调用CloseHandle是有意义的.原始实例和复制的实例之间不会产生干扰,因为您不会写入文件.
另一方面,如果类表示临时文件,则可能需要不同的语义- 也许复制构造函数复制整个文件会很有用,这样您的类的副本就不会干扰原始文件.或者这种行为可能过于隐含,并且您认为该类不具有复制构造函数,而是您必须显式使用复制方法.
所以,除非你解释你正在做什么,以及你打算如何使用这个课程,否则没有"正确"的答案.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |