4

类成员访问:第 3.4.5 节,第 2 点:

如果类成员访问 (5.2.5) 中的 id-expression 是 unqualified-id,并且对象表达式的类型是类类型 C,则在类 C 的范围内查找 unqualified-id。 对于伪析构函数调用(5.2.4),在完整的后缀表达式的上下文中查找非限定id。

在上面的语句中:对于伪析构函数调用(5.2.4),在完整的后缀表达式的上下文中查找非限定ID。

任何人都可以用程序来解释这一点(我知道伪析构函数调用)吗?

4

1 回答 1

3

伪析构函数是在非类类型上调用的类似析构函数的语法:

typedef int I;
I x;
x.I::~I();

如果这被“天真地”解析,那么解析器将看到以下标记:

unqualified-id( x), typename( I), ::, 按位取反, typename( I), (, ), ;.

“按位求反”是一个问题,因为如果你只是这样写:

~I();

那么这将形成一个具有不同语义的有效表达式。即,与 相同~0。因此,必须对上面的表达式进行不同的解析以解释伪析构函数上下文。

于 2011-08-29T11:11:10.557 回答