6

谁能从 ISO N3242 §3.2 第 2 点解释这个声明

类的非布局分配或释放函数由该类的构造函数的定义使用。一个类的非放置释放函数被该类的析构函数的定义使用,或者被虚拟析构函数定义点的查找选择(12.4)。 26 一个类的复制赋值函数由 12.8 中指定的另一个类的隐式定义的复制分配函数使用 odr。一个类的移动赋值函数被 12.8 中指定的另一个类的隐式定义的移动赋值函数 odr 使用。

ISO 标准 2003 说:

一个类的复制赋值函数被隐式定义的另一个类的复制赋值函数使用,如 12.8 中所指定。

这些陈述的实际区别是什么?

任何人都用示例/程序来解释上述附加点......?

我知道移动构造函数/移动分配函数->添加了新功能。

任何人都可以借助示例/程序来解释这一点吗?

请.............

请回答

4

1 回答 1

4

可以在此处找到此添加的基本原理以及示例。简而言之,它明确了何时需要定义类的分配/释放函数。

(C++03) 单一定义规则要求程序中使用的每个变量或函数,对于“使用”的非常具体的定义,都必须有一个精确的定义。因此,对何时认为“使用”(解除)分配功能的描述也要求何时需要定义。

为避免混淆“使用”一词的一般含义和 ODR 中定义的“使用”的含义,只要打算使用第二种含义,“使用”一词就被替换为“使用”。

于 2011-04-11T10:58:55.047 回答