阅读这篇MSDN文章,我遇到了一个简单的例子,它非常适合我,因为我在一些本机c ++接口上完成了一些RAII课程,完成了整个工作:(我是第一次这样做)
ref class Wrapper {
Native *pn;
public:
// resource acquisition is initialization
Wrapper( int val ) { pn = new Native( val ); }
// this will do our disposition of the native memory
~Wrapper(){ delete pn; }
void mfunc();
protected:
// an explicit Finalize() method—as a failsafe
!Wrapper() { delete pn; }
};
Run Code Online (Sandbox Code Playgroud)
这个类与我到目前为止所写的完全一致.保存我没有实现Finalize方法.但是在想到它的特性和用法之前,在我能够更深入地了解它之前......我想知道将Finalizer方法放在保护范围内是否是一般用途和好习惯.
终结器的访问修饰符基本上被忽略,因为终结器有特殊规则:
正式地说,终结器是在Object上声明的受保护的虚拟方法:http://msdn.microsoft.com/en-us/library/system.object.finalize.aspx.在C#中,您无法在终结器上放置accesibilty修饰符.
在C++/cli中,您可以指定任何访问修饰符,但它基本上被忽略.也就是说,将其公开或私有改变一事:特殊规则仍然得到执行.
所以,我会说,只是继续根据惯例保护它.
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |