C++:将结构传递给函数,无法理解语法

标签 c++ function oop c++11 struct

<分区>

对不起,这个标题太糟糕了,但我真的不知道该写什么。

我有以下库 Neural_Network.h 和 C++ 中的网络类:

class Network{
    public:
       struct Settings
       {
           uint32_t                        m_numInputs;
           uint32_t                        m_numHidden;
           uint32_t                        m_numOutputs;
       };
       Network(Settings const& settings);
}

然后在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();
}

我真的不明白为什么我确实需要::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;

在构造函数体内。

最重要的区别是初始化列表也适用于 const 成员和引用(在这种情况下是必需的,因为您不能以通常的方式分配给它们)。这是因为初始化列表直接调用成员的构造函数,而不是先默认构造它们然后调用赋值运算符。

关于C++:将结构传递给函数,无法理解语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47990358/

相关文章:

c++ - QMake 与 GCC 的链接问题

c++ - 以类为参数调用模板类的静态模板方法

c++ - 使用 getline() C++ 从文件读取时遇到问题

javascript - 我如何在 Javascript 中声明类?

c# - 在 C# 中设计类

c++ - 如何专门化模板函数以区分void和non-void函数参数

python - 如何查找密码是否包含列表中的所有字符?

c - Unix/C - 2 种方法有不同的行为

基于外部文件的 C++ 数组

c# - 使用命令模式通过串行发送和接收命令