如果我有2个类AB并希望实现从AB的转换,则可以看到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中的Aoperator =类中的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/

    10-11 17:53