设为首页 加入收藏

TOP

C++结构体
2015-11-21 01:01:36 来源: 作者: 【 】 浏览:1
Tags:结构

1.C++结构体有默认的构造函数

?

#include
  
   
using namespace std;

struct node
{
    int m,n;
};

int main()
{
    node a;
    printf("%d %d\n",a.m,a.n);
    return 0;
}

  

运行结果:

?

\

因为默认的构造函数没有形参且函数体里是空的,所以结构体没有被初始化,输出的值是系统给的,如果把结构体变量定义为全局变量,那么会输出0 0,这是因为全局变量和局部变量在没有初始化时,取初值方式不同,造成运行结果不同

?

#include
  
   
using namespace std;

struct node
{
    int m,n;
};

node a;

int main()
{
    printf("%d %d\n",a.m,a.n);
    return 0;
}

  

?

运行结果:


\

2.把默认的构造函数写出来后,系统就不会再生成默认函数

?

#include
  
   
using namespace std;

struct node
{
    int m,n;
    node(){}//默认的构造函数
};

int main()
{
    node a;
    printf("%d %d\n",a.m,a.n);
    return 0;
}

  
运行结果:
\

?

3.

?

#include
  
   
using namespace std;

struct node
{
    int m,n;
    //node(){}//默认的构造函数
    node(int a,int b)
    {
        n=a;
        m=b;
    }
};

int main()
{
    node a;
    printf("%d %d\n",a.m,a.n);
    return 0;
}

  

这时候程序出错,因为a找不到合适的构造函数,因为你写了构造函数后默认的构造函数系统就不生成了,这时候得重载构造函数如下:

?

?

#include
  
   
using namespace std;

struct node
{
    int m,n;
    node(){}//默认的构造函数
    node(int a,int b)
    {
        n=a;
        m=b;
    }
};

int main()
{
    node a;
    printf("%d %d\n",a.m,a.n);
    return 0;
}

  

4.

?

?

#include
  
   
using namespace std;

struct node
{
    int m,n;
    node(){}//默认的构造函数
    node(int a,int b)
    {
        n=a;
        m=b;
    }
    //使用初始化列表的构造函数
    //node(int a,int b):m(a),n(b){}
};

int main()
{
    node a;
    node b(2,3);
    printf("%d %d\n",a.m,a.n);
    printf("%d %d\n",b.m,b.n);
    return 0;
}

  

运行结果:

?

?

\

5.使用初始化列表的构造函数

?

#include
  
   
using namespace std;

struct node
{
    int m,n;
    node(){}//默认的构造函数
    /*node(int a,int b)
    {
        n=a;
        m=b;
    }*/
    //使用初始化列表的构造函数
    node(int a,int b):m(a),n(b){}
};

int main()
{
    node a;
    node b(2,3);
    printf("%d %d\n",a.m,a.n);
    printf("%d %d\n",b.m,b.n);
    return 0;
}

  

运行结果:

?

\

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇BZOJ 1140 POI2009 KOD 编码 DFS 下一篇LeetCode House Robber II

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: