C++中---结构体变量的默认值以及构造函数的应用

 在自定义结构体中:

   默认值同变量一样,int型的为0,指针型的为“NULL”------------并不是整个结构体为NULL,其中的int型还是有值0的,只是指针型的为NULL。例如

struct node{    
    int v,dis;
};

如果需要手动添加构造函数,代码如下:

struct node{
    int v,dis;

    node(int _v,int _dis):v(_v),dis(_dis){}
};

此时可以在定义node型结构体时直接赋初值,但是如果不赋初值则无法通过编译,因为默认构造函数已经修改了,系统不能再默认添加初始值,如果需要保留默认赋初始值的功能,则可以做如下定义。

struct node{
	int v,dis;
	node(int _v=0,int _dis=0):v(_v),dis(_dis){}
};

此时既保留了默认构造函数赋初始值0,也可以自己手动赋初始值。 参考范例:

#include<cstdio>
#include<vector>
using namespace std;

struct node{
    int v,dis;
    node(int _v=0,int _dis=0):v(_v),dis(_dis){}
};

vector<node> adj[100];
int main()
{
    for(int i=0;i<10;i++)
    {
        int v,dis;
        scanf("%d%d",&v,&dis);
        adj[i].push_back(node(v,dis));
    }
    for(int i=0;i<10;i++)
    {
        printf("%d %d\n",adj[i].v,adj[i].dis);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/vir_lee/article/details/81106049