据我所知,以下陈述是相同的:
A a1(1);
A a2=1;
标题:
class A
{
public:
A(int num){}
};
但是使用引用时,它将无法编译
class B{
private:
int m_a = 0;
int& m_b(m_a);
public:
B(int num):
{
}
};
得到编译错误,指出m_a不是类型名称 但是当使用=时,它可以工作:
class B
{
private:
int m_a = 0;
int& m_b = m_a;
public:
B(int num):
{
}
};
答案 0 :(得分:3)
类内成员初始化与其他形式的初始化不同。
类内成员初始化唯一受支持的语法是:
int& m_b = m_a;
int& m_b{m_a};
您可以在https://en.cppreference.com/w/cpp/language/data_members#Member_initialization上了解更多信息。