相关疑难解决方法(0)

析构函数是否按照标准命名?

根据标准,阶级析构函数是否具有迂腐意义上的名称?

回想一下,构造函数显然没有名称:

12.1.1:

构造函数没有名称.使用可选的函数说明符序列(7.1.2)后跟构造函数的类名后跟参数列表的特殊声明符语法用于声明或定义构造函数.在这样的声明中,忽略构造函数类名称周围的可选括号.

标准没有明确声明析构函数有或没有名称,但是有许多引用如何使用特殊语言引用和声明析构函数,其中没有一个直接引用析构函数的名称.这个问题似乎在各个地方绕过:

12.4.1:

使用可选函数说明符(7.1.2)后跟〜后跟析构函数的类名后跟空参数列表的特殊声明符语法用于在类定义中声明析构函数.

5.2.4.1:

在点之后使用伪析构函数名称.或箭头 - >运算符表示由type-name命名的非类类型的析构函数.结果只能用作函数调用operator()的操作数,并且这种调用的结果类型为void.唯一的效果是在点或箭头之前评估后缀表达式.

12.4.12:

在显式析构函数调用中,析构函数名称显示为〜后跟一个命名析构函数类类型的类型名称.析构函数的调用遵循成员函数的通常规则(9.3),也就是说,如果对象不是析构函数的类类型而不是从析构函数的类类型派生的类,则程序具有未定义的行为(除了在空指针上调用delete没有效果).

最后一种情况(12.4.12)似乎是对析构函数名称的最直接引用,但它仍然避免说析构函数有一个名称,并且对此非常暧昧.12.4.12可以解释为"blah是析构函数的名称"或"析构函数没有名称,但你可以将析构函数称为blah".

那么,析构函数是否有名字?

c++

5
推荐指数
1
解决办法
687
查看次数

标签 统计

c++ ×1