现在的位置: 首页 > 综合 > 正文

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

2018年05月09日 ⁄ 综合 ⁄ 共 1183字 ⁄ 字号 评论关闭

 

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;

}

 

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

 

抱歉!评论已关闭.