在C++结构体中使用静态成员(二)

 

C++中的类可以利用构造函数作一些初始化的操作,也可以利用析构函数作一些清理的操作。而事实上C++中的结构体与类是极为相似的,它也支持构造函数和析构函数,所以可以考虑为结构体添加构造函数与析构函数,在构造函数中将节点计数加1而在析构函数中节点计数减1。这样就不需要在产生节点时将计数器加1在删除节点时将计数器减1,在使用这种结构体产生节点时只需要考虑申请结点空间和删除节点就可以了,而不必再顾及计数器的问题。

以上述思想修改后的代码如下:

#include <iostream>

 

using namespace std;

 

/* 结构体定义 */

typedef struct staticStruct

{

     int data;

     static int count;           // 静态变量

     struct staticStruct* next;

 

     /* 构造器 */

     staticStruct()

     {

         // 计数器加1

         count++;

     }

 

     /* 析构函数 */

     ~staticStruct()

     {

         // 计数器减1

         count--;

     }

}STATICSTRUCT, *PSTATICSTRUCT;

 

int staticStruct::count = 0;     // 初始化结构体静态变量值

 

void main()

{

     PSTATICSTRUCT h;

 

     cout << "1节点创建前: START: " << staticStruct::count << endl;

 

     /* 生成两个结构实例 */

     PSTATICSTRUCT p = new STATICSTRUCT; // 1个结构体

     if(p)

     {

         h = p;

     }

     /* 输出当前结点中的count */

     cout << "1节点创建后: 1: " << h->count << endl;

 

     p = NULL;

     p = new STATICSTRUCT;  // 2个结构体

     if(p)

     {

         h->next = p;

     }

 

     /* 输出两个结构中的静态成员值 */

     cout << "2节点创建后: 1: " << h->count << endl;

     cout << "2节点创建后: 2: " << h->next->count << endl;

 

     /* 释放空间并输出count */

     delete h->next;

     cout << "2节点删除后: 1: " << h->count << endl;

     delete h;

     cout << "1节点删除后: END: " << staticStruct::count << endl;

}

 

编译并运行程序,可以发现程序运行结果与修改前的程序并无二致。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值