我仍在学习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的构造函数?
我试图找到相关文档,但没有运气。
答案 0 :(得分:2)
当类具有一个带有单个参数的构造函数时,可以使用该构造函数将该参数隐式转换为该类的实例。这意味着无论何时需要export default {
name: 'Template',
data () {
return {
item: {loc: require("../assets/example.csv")}
}
}
}
,您的B
构造函数都允许传递字符串。
如果要禁止此隐式转换,请编写B( std::string s )
。有些人认为对于大多数单参数构造函数来说,这是一种好习惯。