页: 1 下面的职能只是明确例子,你总是在内部分配:
void deepCopyPerson(struct person *target, struct person *src)
{
*target = *src;
}
详细阐述: 这些char阵列是你们的 object物的一部分(真实阵列,不仅指点人!),因此被分配和复制。
In order to satisfy the disbeliefers ;-) I dug around in the standard draft 1570 :
<>6.5.16> 转让经营人<>/strong>
<>Semantics
转让经营人储存左轮经营所指定物体的价值。 [根据此处不适用的类型转换和排序考虑。]
[......]
<>0>6.5.16。 简单派任:
<>限制>
如下文之一应持有:
- the left operand
has an atomic, qualified, or unqualified version of a structure or
union type compatible with the type of the right;
[......]
<>Semantics
In simple assignment (=), the value of the right operand is converted
to the type of the assignment expression and replaces the value stored
in the object designated by the left operand.
1https://archive.org/details/TheCProgramingLanguage FirstEdition”rel=“nofollow noreferer”> 布赖恩·克里尼汉和丹尼斯·里奇在贝尔实验室撰写并于1978年出版的《方案拟订语言<>第一版》(;)是第一份C版的非正式语言说明,经常称为“K&R C”,在两本书作者注明该版本(以及10年之后具体指明的对ANSI C的区别)。 该书第一版载有第121页的以下句子:
The essential rules are that the only operations that you can perform on a structure are take its address with &, and access one of its members.
In particular, you cannot assign structures. (But they continue "these restrictions will be removed in forth- coming versions".)
事实上,这是10年之后的ANSI版本中语言的少数实质性(而不是偶然)增补内容之一。 Kernighan和Ritchie编写了一本书的“ANSI C版”。 第129页的这一句现在案文如下:
The only legal operations on a structure are copying and assigning to it as a unit, taking its address with &, and accessing its members.
它们详细阐述:
制版和派任还包括向职能提出论据和从职能中恢复价值。
如今,在最新的C++标准中,这种等同仍属实。
既然我们在这里是C++根基: 下一次发言是一份起诉书。 结构不可比较 令人感兴趣的是,他们添加了这一句——显然,在引入内在派任后,就提出自己的意见,但遭到拒绝。 我认为,从来就没有理由: 如果你能够分配成员,为什么也没有比较这种方式? 在许多情况下,这样做只是罚款,而人工比较难以维持。 在C++20和航天运营商,在(表面上)出现故障时产生所有其他比较结果;实际上,它没有进行成员-货物比较。