我目前正在计划一个具有一些转换功能的类。我只是想知道什么时候我必须重载一个类的演员。当我有一个转换构造函数A(B& b)
然后据我看到,只要我需要将B转换为A,我可以只使用转换构造函数。我是否需要重载一个类的演员操作符?
例子:
B b, c, d;
A a = b; // conversion constructor automatically called
a = A(c); // could also overload assignment operator
function_of_a((A)d); // can equally write this as function_of_a(A(d))
目前我打算只使用一个转换构造函数,而我没有看到重载转换运算符的任何目的,我也打算故意不超载为A = B赋值运算符使代码中的转换更加明显。
请注意,您的转换构造函数不允许rvalues。 – chris
转换构造函数是* destination *类型接口的一部分。 Cast操作符是* source *类型接口的一部分。有时您不能更改目标类型或不希望它对源类型有依赖关系。 –
@chris:如果没有右值/移动构造函数存在,是不是会回退到正常的引用/复制构造函数? – Michael