我正在 MS Visual C++ 6.0 下编写程序(是的,我知道它很古老,不,我无法升级)。我看到一些我认为非常奇怪的行为。我有一个类,其中定义了两个构造函数,如下所示:
class MyClass
{
public:
    explicit MyClass(bool bAbsolute = true, bool bLocation = false) : m_bAbsolute(bAbsolute), m_bLocation(bLocation) { ; }
    MyClass(const RWCString& strPath, bool bLocation = false);
private:
    bool m_bAbsolute;
    bool m_bLocation;
};
当我使用以下语法实例化此类的实例时:MyClass("blah"),它调用第一个构造函数。如您所见,我在其中添加了explicit关键字,希望它不会那样做……没有骰子。它似乎更喜欢从const char *to的转换而不是 tobool的转换RWCString,后者有一个带有const char *. 为什么这样做?我会假设给定这样的两种可能的选择,它会说它是模棱两可的。我能做些什么来防止它这样做?如果可能的话,我想避免将strPath参数显式转换为 a RWCString,因为它将大量与文字一起使用,并且需要大量额外的输入(加上一个非常容易犯的错误)。