【发布时间】:2018-02-26 15:54:13
【问题描述】:
如果我有 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
现在让我们假设我实现了这两个函数(在类A 中转换为B 和从A 在类B 中的operator =:
第三种可能性
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
}
}
假设 Code 1 和 Code 2 具有相同的效果(甚至不同的效果,为什么不)。
我的问题是:
- 如果提供了相互竞争的强制转换/赋值方法,那么在进行隐式强制转换时会首先选择哪一个?
- 是否有兴趣实现这两种相互竞争的强制转换/分配方法?
- 在
B()类A的转换运算符中调用B类的operator =或许是个好主意?
【问题讨论】:
-
@xskxzr 肯定相关,重复不,我的问题是多个,走得更远。
标签: c++ casting operator-overloading implicit-conversion