解密C ++代码:struct中的函数与struct的名称相同

时间:2014-06-05 08:09:02

标签: c++

我正在尝试接受编程。我从ai-junkie.com获得了这段代码。我不明白每个结构的最后几行

  1. SNeuron(int NumInputs),
  2. SNeuronLayer(int NumNeurons,int NumInputsPerNeuron)。
  3. 这是为了什么目的?有人关心教基本的c ++吗?

    struct SNeuron {
        //the number of inputs into the neuron
        int m_NumInputs;
    
        //the weights for each input
        vector<double>  m_vecWeight;
    
        //ctor
        SNeuron(int NumInputs);
    };
    
    struct SNeuronLayer {
    
        //the number of neurons in this layer
        int m_NumNeurons;
    
        //the layer of neurons
        vector<SNeuron> m_vecNeurons;
    
        SNeuronLayer(int NumNeurons, int NumInputsPerNeuron);
    };
    

2 个答案:

答案 0 :(得分:3)

这是构造函数。有人对它进行了无意义的评论ctor。它允许您使用类似

的代码实例化SNeuron的实例

SNeuron sn(5);

这有助于程序稳定性。在C中,您必须自己填充结构字段,并实例化结构实例。这可能会使结构处于不明确的状态。在C ++中,可以一步完全创建实例。

请记住,在C ++中,structclass完全相同:例外情况是struct所有成员函数和成员数据都是public默认值(而class默认为private。)

答案 1 :(得分:0)

这是接受struct SNeuron的{​​{1}}的C-tor。

在C ++中,根据定义,int只是struct,所有成员class。和任何public一样,它可以有一个c-tor,d-ctor和其他C ++元素。