谁能解释一下当前 C++0x 标准草案的这一段吗?
谁能解释 ISO N3242 §3.2 第 2 点中的这一说法
非安置分配或 类的释放函数是 odr-根据 a 的定义使用 该类的构造函数。一个 非放置释放函数 对于一个类,由 odr 使用 that 的析构函数的定义 类,或通过选择 在 a 的定义点查找 虚拟析构函数 (12.4).26 A 类的复制赋值函数 被隐式定义的 odr 使用 另一个的复制分配函数 12.8 中指定的类别。一个 类的移动分配函数 被隐式定义的 odr 使用 另一个的移动分配函数 12.8 中指定的类。
ISO 标准 2003 规定:
类的复制赋值函数 由隐式定义的 另一个的复制分配函数 12.8 中指定的类。
这些说法的实际区别是什么?
有人用示例/程序解释上面添加的一点吗?
我知道移动构造函数/移动分配函数 - >添加了新功能。
任何人都可以借助示例/程序来解释这一点吗?
请......
请......请回答
Can anyone explain this statement from ISO N3242 §3.2, 2nd point
A non-placement allocation or
deallocation function for a class is
odr-used by the definition of a
constructor of that class. A
non-placement deallocation function
for a class is odr-usedby the
definition of the destructor of that
class, or by being selected by the
lookup at the point of definitionof a
virtual destructor (12.4).26 A
copy-assignment function for a class
is odr-used by an implicitly-defined
copy-assignment function for another
class as specified in 12.8. A
move-assignment function for a class
is odr-used by an implicitly-defined
move-assignment function for another
class as specified in 12.8.
ISO Standard 2003 says:
A copy-assignment function for a class
is used by an implicitly-defined
copy-assignment function for another
class as specified in 12.8.
What is the actual difference in these statements?
Any one explain the above added point in terms of example/program...?
I know move constructor / move assigment function -->new feature added .
Can any one explain this with the help of an example/program?
please.............
please.......... answer
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以找到此添加的基本原理和示例
(C++03) 单一定义规则要求程序中使用的每个变量或函数,对于“使用”的非常具体的定义,必须具有完全相同的一个定义。
因此,对分配(解除)分配函数何时被视为“已使用”的描述也强制要求何时需要定义。
为了避免“use”一词的一般含义与 ODR 中定义的“use”含义之间的混淆,每当涉及第二个含义时,“use”一词均已替换为“odr-use”。
The rationale for this addition, with examples can be found here. In short, it is a clarification of exactly when an allocation/deallocation function for a class needs to be defined.
The (C++03) One Definition Rule requires that every variable or function that is used in the program, for a very specific definition of "use", must have exactly one definition.
Therefore, a description of when a (de)allocation function is considered "used", also mandates when a definition is required.
To avoid confusion between the general meaning of the word "use", and the meaning of "use" as defined in ODR, the word "use" has been replaced with "odr-use" whenever the second meaning is intended.