gpt4 book ai didi

c++ - 为什么我看不到在从 C++ 中的函数返回对象的情况下调用复制构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:58 25 4
gpt4 key购买 nike

<分区>

下面的代码中ret变量是栈变量,一旦foo返回分配给ret的内存就不存在了。但是string是一个类,调用了一个拷贝构造函数,将ret的内容拷贝到var中。我想使用测试代码来测试它的有效性:

class A
{
public:
A(){ test(); }
A(const A &){ std::cout << "copy constructor A" <<std::endl; }
virtual void test(){ std::cout<< "A" <<std::endl;}
A & operator=(const A &);
};

A & A::operator=(const A &)
{
std::cout << "assignment operator A" << std::endl;
}

A functionA(int a)
{
A localA;
return localA;
}

int main()
{
A a = functionA(2);
}

我期望的输出是:

  A 
copy constructor A

但是下面的代码输出如下:

  A

有人能告诉我为什么会这样吗?谢谢!

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