2011-08-29 84 views
4

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

如果在一个类的成员访问的ID表达(5.2 .5)是一个 不合格id,并且对象表达式的类型是类型为 的类型C,在类C的范围内查找非限定标识符。 对于伪析构函数调用(5.2。 4),在完整的后缀表达式的上下文中,将非限定id看作 。

在这里的上述声明:对于一个伪析构函数调用(5.2.4),不合格-ID在完整的后缀表达式的情况下抬起头来。

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

回答

3

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

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

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

x),类型名称(I),::,按位取反,类型名称(I),(,),;

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

~I(); 

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

+0

@有没有可能为上述语句编写程序。 – user751747

+0

@ user751747不确定你的意思。只需将上面的代码放在'main'函数中,并且已经有了你的程序。 –