任何人都可以解释当前C ++ 0x标准草案的这一段吗?

时间:2011-04-11 10:29:57

标签: c++ c++11 standards one-definition-rule

任何人都可以从ISON3242§3.2,第二点

解释这一说法
  

非展示位置分配或   一个类的释放函数是   由a的定义使用的odr   那个类的构造函数。一个   非放置解除分配功能   对于一个班级来说,这是一个很有用的   析构函数的定义   上课,或者被选中   查找定义a   虚析构函数(12.4).26 A.   类的复制赋值函数   由隐式定义的odr使用   另一个的复制分配功能   12.8中规定的类。一个   类的移动赋值函数   由隐式定义的odr使用   移动分配功能为另一个   12.8中指定的类。

ISO标准2003说:

  

类的复制赋值函数   由隐式定义使用   另一个的复制分配功能   12.8中指定的类。

这些陈述的实际差异是什么?

任何人都可以用示例/程序来解释上面添加的内容......?

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

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

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

请..........回答

1 个答案:

答案 0 :(得分:4)

这个添加的基本原理,可以找到here的例子。简而言之,它清楚地说明了何时需要定义类的分配/释放函数。

(C ++ 03)一个定义规则要求程序中使用的每个变量或函数,对于"使用"的非常具体的定义,必须具有一个定义。 因此,当考虑(de)分配函数"使用"时,还要求定义何时需要定义。

为避免混淆单词"使用"的一般含义与"的含义混淆,使用"在ODR中定义,单词"使用"已被替换为" odr-use"无论何时意图第二个含义。