gpt4 book ai didi

c++ - 为什么模板复制构造函数会覆盖默认复制构造函数?

转载 作者:行者123 更新时间:2023-11-30 01:21:29 24 4
gpt4 key购买 nike

<分区>

编辑更新代码:

class Any
{
public:
Any()
{
}

Any(const Any &other)
{

}

Any(Any &other) // added per Ben's answer
{
}

Any(Any &&other)
{
}

Any(const char *value)
{
}

template<typename T>
Any(const T &value)
{
}

template<typename T>
Any(T &&value)
{
cout << "move ctor" << endl;
}

template<typename T>
Any(const vector<T> &value)
{
}

template<typename T>
Any(vector<T> &&value)
{
}
};

int main(int argc, char *argv[])
{
vector<string> numbers;
numbers.push_back("one");
numbers.push_back("two");
numbers.push_back("three");
numbers.push_back("four");

Any anyNumbers(numbers);
Any anyNumbersCopy = anyNumbers;

return 0;
}


打印:

"move ctor"

为什么会这样?

有什么方法可以强制调用默认的复制构造函数而不是模板化的 const& 构造函数?

如果可能的话,我想避免使模板构造函数显式化,这样我仍然可以像这样隐式构造类;

Any number = 5;

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