(最新理解10.21)
结构体这东西就是一个独立的函数,你可以在里面干很多事情,甚至是直接把程序写到里面,我的理解还是太浅显了,此贴已废,请大家不要相信这里面写的任何一个字!
首先我们先来看看这样一个结构体:
struct Edge{
int from,to,dist;
Edge(int u,int v,int d):from(u),to(v),dist(d){}//一种例子
Edge(){from=0;to=0;}//另一种例子
//Edge(){} 通式
};
那么,在结构体里面定义的 <结构体名> (参数){函数内容} 就构成了一个构造函数。
作为一个函数,构造函数也拥有函数的一些特性,当然,也有些不同。
不同之处在于,该函数没有返回值,也并不能用任何方式“return”。
这个函数是如何运转的呢?
这个函数在结构体被定义的时候调用,调用后,它会选择符合函数条件的那一个构造函数,所以在上式中一式和二式是可以同时存在的,但显然,2和3不能同时存在(CE)。
像这样:
Edge sy(1,2,3);
Edge st;
第一个调用了第1个函数,声明了一个类型为‘Edge’的结构体,并将from,to,dist赋值为1,2,3;
第二个则调用了第2个函数,并将from,to赋值为0;
scanf("%d%d%d",&st.from,&st.to,&st.dist);
printf("%d %d %d\n",st.from,st.to,st.dist);
printf("%d %d %d",sy.from,sy.to,sy.dist);
我们依旧正常访问即可,构造函数对定义结构体之后的一切没有影响;
这个东西的用处有一些,主要是为了方便,我们对结构体中的好几个变量同时赋值时可以用一式,要让一些东西归零时就可以用二式,这样虽然没有什么高端技巧,但写起来会更简洁,可读性会提高。(总而言之就是对懒人很方便)
第一次写博客,内容浅显且不保证正确,纯属个人理解。如有错误之处敬请提出,为了我和可能看这个博客的人,请不吝赐教,谢谢!
2017.10.20晚