初始化类实例时,C ++隐式调用类成员的构造函数

时间:2018-10-20 05:07:20

标签: c++ constructor

我仍在学习C ++的美丽。我今天遇到了一些代码,希望有人能给我一些指导。 我有2节课

class B
{
public:
    B( std::string s )
        : m_string( s )
    {
    }

private:
    std::string m_string;
};

class A
{
public:
    A( B b )
        : m_b( b )
    {
    }

private:
    B m_b;
};

Main.cpp

A a = A(std::string("hello"));

我对这种初始化如何工作感到有些困惑?编译器如何知道将std::string("hello)传递给B的构造函数?

我试图找到相关文档,但没有运气。

1 个答案:

答案 0 :(得分:2)

当类具有一个带有单个参数的构造函数时,可以使用该构造函数将该参数隐式转换为该类的实例。这意味着无论何时需要export default { name: 'Template', data () { return { item: {loc: require("../assets/example.csv")} } } } ,您的B构造函数都允许传递字符串。

如果要禁止此隐式转换,请编写B( std::string s )。有些人认为对于大多数单参数构造函数来说,这是一种好习惯。