lel*_*lli 1 c++ oop struct function c++11
抱歉标题非常糟糕,但我真的不知道该怎么写.
我有以下库Neural_Network.h和C++中的类Network:
class Network{
public:
struct Settings
{
uint32_t m_numInputs;
uint32_t m_numHidden;
uint32_t m_numOutputs;
};
Network(Settings const& settings);
}
Run Code Online (Sandbox Code Playgroud)
然后,在Neural_Network.cpp文件中,它按以下方式实现:
Network::Network( Settings const& settings )
: m_numInputs( settings.m_numInputs )
, m_numHidden( settings.m_numHidden )
, m_numOutputs( settings.m_numOutputs )
{
assert( settings.m_numInputs > 0 && settings.m_numOutputs > 0 && settings.m_numHidden > 0 );
InitializeNetwork();
InitializeWeights();
}
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么我需要在函数名称之后需要:: m_numInputs(settings.m_numInputs),m_numHidden(settings.m_numHidden),m_numOutputs(settings.m_numOutputs).它的目的是什么?
它被称为初始化列表,只能在构造函数上使用.它与写作大致相同
this->m_numInputs = settings.m_numInputs;
this->m_numHidden = settings.m_numHidden;
this->m_numOutputs = settings.m_numOutputs;
Run Code Online (Sandbox Code Playgroud)
在构造函数体内.
最重要的区别是初始化列表也适用于const成员和引用(在这种情况下是必需的,因为您不能以通常的方式分配这些).这是因为初始化列表直接调用成员的构造函数,而不是首先默认构造它们然后调用赋值运算符.