【个人理解向】对构造函数的理解

来源:互联网 发布:网络控制器怎么装 编辑:程序博客网 时间:2024/06/04 20:03

(最新理解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晚
原创粉丝点击