为什么引用 operator = 有效而使用构造函数却不行?
Why reference with operator = works but with constructor don't?
据我所知,以下说法是相同的:
A a1(1);
A a2=1;
Header:
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):
{
}
};
In-class成员初始化不同于其他形式的初始化。
in-class 成员初始化唯一支持的语法是:
int& m_b = m_a;
int& m_b{m_a};
您可以在 https://en.cppreference.com/w/cpp/language/data_members#Member_initialization 阅读更多相关信息。
据我所知,以下说法是相同的:
A a1(1);
A a2=1;
Header:
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):
{
}
};
In-class成员初始化不同于其他形式的初始化。
in-class 成员初始化唯一支持的语法是:
int& m_b = m_a;
int& m_b{m_a};
您可以在 https://en.cppreference.com/w/cpp/language/data_members#Member_initialization 阅读更多相关信息。