gpt4 book ai didi

c++ - 缺少构造函数调用

转载 作者:行者123 更新时间:2023-11-30 03:38:58 24 4
gpt4 key购买 nike

<分区>

我很困惑为什么我的程序会以意想不到的方式运行。然后我写了这个简化版,发现有一个构造函数调用“缺失”。

template <class T>
class A
{
public:

A () {std::cout << "default" << "\n";} // default ctor

A (const A& src) // copy ctor
{
std::cout << "copy" << "\n";
}

friend A<T> operator<<(A& a, unsigned i)
{
std::cout << "x1" << "\n";
A tmp;
std::cout << "x2" << "\n";
return tmp;
}
};


int main()
{
A<int> a1;
A<int> a2(a1 << 2);
}

输出

default
x1
default
x2

我所期望的是

default
x1
default
x2
copy

作为 a1 << 2 返回的右值将被传递到 const A&复制构造函数的参数。但事实并非如此。如果不是那样,至少我会期待

default
x1
default
x2
default

因为我会认为 a2 的构造函数需要调用。

这是怎么回事?

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