【c++】结构体构造函数的使用

结构体构造函数的使用

在学习BFS广度优先搜索单独时候看到这么一段代码

    struct Step
    {
        int x,
        int steps;
        Step(int xx = 0,int ss= 0):x(xx),steps(ss){}
    }

中间有一句结构体内部的构造函数

三种结构体初始化的方法

  1. 利用结构体自带的默认构造函数
  2. 利用带参数的构造函数
  3. 利用默认无参的构造函数

这里运用了结构体构造函数的形式。结构体Step中定义了一个函数名也是Step的函数,但是没有返回值,这样的函数就是构造函数。构造函数是在声明变量时调用的,例如Step a,b(1,2),就是分别调用了Step()和Step(1,2)。在算法入门经典105-106页中有介绍

所以在构建结构体数组的时候如果只写了带参数的构造函数将会出现数组无法初始化的错误。

安全的写法示例

    struct node
    {
        int data;
        string str;
        char x;
        //自己写的初始化函数
        void init(int a, string b, char c){
            this->data = a;
            this->str = b;
            this->x = c;
        }
        // 注意构造函数这里没有分号
        node() :x(),str(),data(){} // 无参数的构造函数初始化的时候调用
        node(int a, string b,char c):data(a),str(b),x(c){} // 有参数
    }
    N[10];
posted @ 2022-02-23 23:56  CeliaChu207  阅读(425)  评论(0编辑  收藏  举报