班级成员访问:第3.4.5节,第2点:
如果类成员访问(5.2.5)中的id-expression是 unqualified-id,对象表达式的类型是一个类 类型C,在class C的范围内查找unqualified-id。 对于伪析构函数调用(5.2.4),查看unqualified-id 在完整的后缀表达式的上下文中。
在上面的语句中:对于伪析构函数调用(5.2.4),在完整的postfix-expression的上下文中查找unqualified-id。
任何人都可以用程序解释这个(我知道伪析构函数调用)吗?
答案 0 :(得分:3)
伪析构函数是在非类类型上调用的类似析构函数的语法:
typedef int I;
I x;
x.I::~I();
如果这是“天真地”解析的,那么解析器会看到以下标记:
unqualified-id(x
),typename(I
),::
,bitwise-negate,typename(I
),(
,{{ 1}},)
。
“按位否定”是一个问题,因为如果你刚写了这个:
;
然后,这将形成一个带有不同语义的有效表达式。即,与~I();
相同。因此,必须对上面的表达式进行不同的解析以考虑伪析构函数上下文。