在 C++0x -n3290 草案中:他们在 section :Destructors 中添加了:12.4/2nd point last line
**A destructor shall not be declared with a ref-qualifier.**
在 c++03 草案中....他们没有在析构函数中提到这一点?
我的问题是
*~S() ; //this declaration is allowed or not according to the Standard's
//**~S(); ***~S() ; etc...........
允许这种类型的声明吗? 他没有在草案的任何地方描述这个......声明?
在 GCC 4.6.0,Sun/Oracle C++12.0 , --->允许这个声明 int Comeau C/C++ -->不允许
最佳答案
这看起来不像是任何类型的合法函数声明,更不用说析构函数了。我不确定标准的那一部分在谈论什么,但我有一个猜测。
我怀疑有一个限定符说你的函数是在右值引用上调用的。像这样:
class A {
public:
void IAmAnRValue() &&;
};
我认为标准中的语言是说在析构函数中不允许使用此限定符,就像尾随 const
也是非法的一样。
而且,经过进一步调查,我对自己推测正确性的确定性大大提高。这是理由:
它清楚地指出函数现在可以在“cv-qualifer”之后有一个“ref-qualifier”。这意味着函数声明现在可以跟在 const &
或 const volatile &&
之后,而不仅仅是 const
。使用的术语(ref-qualifier)与您引用的标准中使用的术语相同。析构函数不能拥有析构函数是有道理的。
关于c++ - 析构函数不应该用指针声明吗?在 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7329617/