如果我有2个类A
和B
并希望实现从A
到B
的转换,则可以看到2种可能性。
第一种可能性
class A {
// Some attributes, methods
operator B() const {
// Conversion from A to B
}
}
class B {
// Some attributes, methods
}
第二种可能性
class A {
// Some attributes, methods
}
class B {
// Some attributes, methods
B& operator =(const A& src) {
// Conversion from A to B
}
}
这两种方法都允许运行以下代码:
执行的代码
A instA;
B instB;
instB = instA; // Ok
现在,让我们想象一下我实现了这两个功能(将类
B
中的A
和operator =
类中的A
投射到B
:第三种可能性
class A {
// Some attributes, methods
operator B() const {
// Conversion from A to B - Code 1
}
}
class B {
// Some attributes, methods
B& operator =(const A& src) {
// Conversion from A to B - Code 2
}
}
假设代码1和代码2具有相同的效果(甚至是不同的效果,为什么不这样)。
我的问题是:
operator =
类的B
cast运算符中调用B()
类的A
甚至是个好主意? 最佳答案
有了这些选择,operator=()
将被优先考虑,因为它不需要转换参数RHS。
不。最好避免混淆。
如果您必须同时支持两者,那么是的,这样做是个好主意。
关于c++ - C++-竞争 Actor /作业,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48992242/