Chinaunix
标题:
好久没有玩C++了,请教一个语法问题
[打印本页]
作者:
kytexzy
时间:
2009-09-02 11:51
标题:
好久没有玩C++了,请教一个语法问题
小弟我最近看一个C plus plus代码,遇到一个语法不懂,求问。
if (pointer == storage_.address())
{
in_use = false;
}
else
{
:: operator delete(pointer);
}
请问上面代码中的
:: operator
域操作符::为什么要用到operator关键字前面?在语法层面这是什么意思?
[
本帖最后由 kytexzy 于 2009-9-2 11:52 编辑
]
作者:
GodPig
时间:
2009-09-02 12:24
调用全局的operator delete??
是不是为了防止系统的被重写?
作者:
openspace
时间:
2009-09-02 12:26
标题:
回复 #1 kytexzy 的帖子
这个不会是重载了delete吧
然后调用全局delete
具体重载不是太熟悉
C++ Primer或者C++编程思想上应该有
LZ可以看看
作者:
OwnWaterloo
时间:
2009-09-02 12:38
标题:
回复 #1 kytexzy 的帖子
这东西叫什么名字我忘了, 好像叫全局域运算符 ……
作用是, 从名字空间的根开始解析名字。
/* 1 */ void f();
namespace ns1 {
/* 2 */ void f();
namespace ns2 {
/* 3 */ void f();
void g()
{
/* 3 */ ns2::f(); f();
/* 2 */ ns1::f();
/* 1 */ ::f();
/* 2 */ ::ns1::f();
/* 3 */ ::ns1::ns2::f();
}
}
void g()
{
/* 2 */ ns1::f(); f();
/* 1 */ ::f();
/* 2 */ ::ns1::f();
}
}
void g()
{
/* 1 */ f(); ::f();
}
lz那段代码是成员函数中的吧?
因为类自己可以定义 operator delete
所以 :: operator delete 就是说, 一定调用全局那个, 无论类是否有自己的。
作者:
gussing
时间:
2009-09-02 12:58
请把operator delete连在一起念。。。
作者:
kytexzy
时间:
2009-09-02 14:00
明白了,原来是解析名字空间用的。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2