gpt4 book ai didi

c++ - 复制构造函数或=运算符?

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

    class Foo
{


};

Foo f;
Foo g = f; // (*)

我的问题是,标有 (*) 的行中调用的是什么?它是默认的复制点击率还是“=”运算符?

最佳答案

My question is, what is being called in the line marked with (*) ? Is it the default copy ctr or '=' operator?

复制构造函数将被调用。

即使使用了 = 符号,这也是初始化的情况,其中左侧的对象是通过提供右侧的表达式构造的作为其构造函数的参数。

特别是,这种形式的初始化称为复制初始化。请注意,当初始化表达式的类型与初始化类对象(Foo,在本例中)的类型相同时,复制初始化基本上等同于直接初始化,即:

Foo g(f); // or even Foo g{f} in C++11

唯一细微的区别是,如果 Foo 的复制构造函数被标记为 explicit(尽管很难想象为什么会这样),重载解析将失败在复制初始化的情况下。

关于c++ - 复制构造函数或=运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17133553/

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