gpt4 book ai didi

c++ - C++ 中的隐式转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:13 24 4
gpt4 key购买 nike

给定以下代码,为什么编译器在构造 Bar 时不解析隐式转换?也就是说,构造 Foo 就像构造 a 一样,然后(应该)用于构造 Bar?

#include <string>

class ImplicitlyConvertToChar
{
public:
ImplicitlyConvertToChar(const char* a_char)
: m_string(a_char)
{ }

ImplicitlyConvertToChar(const char* a_char, size_t a_end)
: m_string(a_char)
{
}

template <typename T_String>
ImplicitlyConvertToChar(T_String const& a_string)
: m_string(a_string.begin())
{
}

operator char const * () const
{ return m_string; }

const char* m_string;
};

class Foo
{
public:

Foo(const ImplicitlyConvertToChar& a_charLike)
: m_string(a_charLike)
{ }

const char* m_string;
};

class Bar
{
public:
Bar(const Foo& a_foo)
: m_foo(a_foo)
{ }

Foo m_foo;
};

int main()
{
Foo a("this works");
Bar b("Why doesn't this?");
}

最佳答案

不允许超过一个用户定义的隐式转换。 Foo 示例涉及一个,Bar 示例涉及两个。

关于c++ - C++ 中的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18190761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com