类成员访问:第3.4.5节,第2点:从N3290草案C ++开始

时间:2011-08-29 10:34:24

标签: c++ c++11 class-members

班级成员访问:第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。

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

1 个答案:

答案 0 :(得分:3)

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

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

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

unqualified-id(x),typename(I),::,bitwise-negate,typename(I),(,{{ 1}},)

“按位否定”是一个问题,因为如果你刚写了这个:

;

然后,这将形成一个带有不同语义的有效表达式。即,与~I(); 相同。因此,必须对上面的表达式进行不同的解析以考虑伪析构函数上下文。