gpt4 book ai didi

c++ - 来自不同类型的模板类复制构造函数 : should it follow the Rule of Five?

转载 作者:行者123 更新时间:2023-11-27 22:34:04 25 4
gpt4 key购买 nike

我有以下类(class):

template <typename T>
class A
{
public:
A(const T& value): m_value(value)
{
}

template <typename M>
A(const A<M>& other): A(T(other.m_value))
{
}

private:
T m_value;
};

这个类应该遵循Rule of Five吗? ?或者 template <typename T>template <typename M>
A<T>::A(const A<M>& other)
不被认为是复制构造函数?

最佳答案

五规则之所以存在,是因为如果您有一个复制构造函数,那可能是因为您不能使用自动生成的构造函数,而这又可能是因为您有一些间接需要被照顾。如果是这样,您通常还需要在分配和销毁期间处理它。

您拥有的不是复制构造函数。它从另一种类型转换而来。您的代码中没有迹象表明成员 m_value 在分配或销毁期间需要特殊处理。此外,您拥有的复制构造函数不执行任何特殊操作。

如果您能想到需要放入上述特殊成员函数中的一些代码,那么就去做吧。否则,您不需要它们。

一般规则可能有用,但您最终还是需要根据思考做出设计决策!您不会仅仅因为经验法则表明您可能需要而实现功能。

关于c++ - 来自不同类型的模板类复制构造函数 : should it follow the Rule of Five?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57115268/

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