Bry*_*ere 8 c++ scope-resolution delete-operator
我目前正在查看::delete用于删除指针的C++代码.
一个毫无意义的例子是:
void DoWork(ExampleClass* ptr)
{
::delete ptr;
}
Run Code Online (Sandbox Code Playgroud)
以这种方式使用delete关键字的目的是什么?
Bas*_*tch 11
在某些情况下,operator delete可能会重新定义 - 实际过载 - (例如,您Class可能会定义它并定义operator new).通过编码,::delete您说您正在使用标准的"预定义" 删除运算符.
一个典型的用例都重新定义operator new和operator delete一些Class:你要保持一个隐藏的全局组由创建的所有指针您 Class::operator new和删除你的 Class::operator delete.但是,delete 在调用全局之前,您的实现 将从全局集中删除该指针::delete
delete在C++中,运算符的方式=是相同的.因此可以重新实施.就像=,重新实现是特定于它所引用的类.添加::确保delete我们调用的运算符是全局运算符而不是特定于给定类的运算符.
当您delete为特定类重新实现然后想要引用真实类时,这可能很有用.