gpt4 book ai didi

c++ - 这里调用了哪个构造函数?

转载 作者:可可西里 更新时间:2023-11-01 18:26:46 26 4
gpt4 key购买 nike

在这段代码中,实际调用了哪个构造函数?

Vector v = getVector(); 

Vector 有复制构造函数、默认构造函数和赋值运算符:

class Vector {
public:
...
Vector();
Vector(const Vector& other);
Vector& operator=(const Vector& other);
};

getVector 按值返回。

Vector getVector();

代码使用 C++03 标准。

代码片段看起来应该调用默认构造函数然后调用赋值运算符,但我怀疑这个声明是使用复制构造函数的另一种形式。哪个是正确的?

最佳答案

= 出现在初始化中时,它会调用复制构造函数。不过,一般形式与直接调用复制构造函数并不完全相同。在语句 T a = expr; 中,如果 expr 是 T 类型,则调用复制构造函数。如果 expr 不是 T 类型,则首先进行隐式转换,如果可能,然后将其作为参数调用复制构造函数。如果无法进行隐式转换,则代码格式错误。

根据 getVector() 的结构,拷贝可能会被优化掉,并且在函数内部创建的对象与存储在 v 中的物理对象相同。

关于c++ - 这里调用了哪个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9957322/

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