gpt4 book ai didi

c++ - 复制和直接初始化行为不同的动机是什么?

转载 作者:IT老高 更新时间:2023-10-28 14:00:59 35 4
gpt4 key购买 nike

Why is copy constructor called instead of conversion constructor? 有点相关

初始化有两种语法,直接初始化和复制初始化:

A a(b);
A a = b;

我想知道他们有不同定义行为的动机。对于拷贝初始化,涉及到一个额外的拷贝,我想不出那个拷贝有什么用途。由于它是临时拷贝,因此可以并且可能会对其进行优化,因此用户不能依赖它的发生-因此,额外的拷贝本身不足以引起不同的行为。那么……为什么?

最佳答案

只是一种猜测,但如果没有 Bjarne Stroustrup 确认它的真实情况,恐怕很难更确定:

之所以这样设计,是因为假定程序员会期望这样的行为,即他会期望在使用 = 符号时完成复制,而不是使用直接初始化语法来完成。

我认为可能的复制省略仅在标准的更高版本中添加,但我不确定 - 这是有人可以通过检查标准历史确定的。

关于c++ - 复制和直接初始化行为不同的动机是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11223285/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com