C++构造函数和析构函数的使用与讲解分享!

构造函数(constructor)

1.构造函数是种特殊的类成员函数,遵循如下规则:

例如:

  class Obj  {  ...  public:     Obj()     {       ...     }  };

2.构造函数可以带参数,也可以重载

  class Obj  {  ...  public:     Obj()     {      ...     }     Obj(int x, int y)     {      ...     }  };

3.构造函数和普通成员函数不一样,一般不显示调用。在创建一个对象时,构造函数自动调用(编译器来完成)。

析构函数(destructor)

1.析构和构造是一对相反的过程,对象被创建时调用构造函数,对象被销毁时调用析构函数,遵循如下规则:

例如,

  class Obj  {  public:    ~Obj()     {     }  };

2.析构函数只能有一个,不允许重载。

3.析构函数不显示调用,对象销毁时编译器自动调用。

重新实现链表(使用类,构造和析构函数)

创建DataObj.h头文件

  #ifndef _OBJECT_H_  #define _OBJECT_H_  struct Student  {   char name[32];   int age;   Student* pNext;  };  class DataObj  {  public:   DataObj();   ~DataObj();   void add(Student* pStu);   void find(int age);   void printNode(Student* pNode);  private:   Student m_head;  };  #endif

创建DataObj.cpp源文件

  #include <stdio.h>  #include <string.h>  #include <stdlib.h>  #include "DataObj.h"  //构造有头链表  DataObj::DataObj()  {   m_head.pNext = NULL;  }  DataObj::~DataObj()  {   //指向每个节点的头部   Student* p = m_head.pNext;   //释放所有节点   while(p)   {   Student *next = p->pNext;   free(p);   p = next;   }  }  void DataObj::add(Student* pNode)  {   //指向每个节点的头部   Student* p = &m_head;   //通过头节点查找到链表尾部节点   while (p)   {   if (p->pNext == NULL)   {    break;   }   p = p->pNext;   }   //添加节点到尾部   p->pNext = pNode;  }  void DataObj::find(int age)  {   //标记是否找到   bool bFind = false;   Student* p = &m_head;   while(p)   {   if (p->age == age)   {    bFind = true;    printNode(p);   }   p = p->pNext;   }   if (!bFind)   {   printf("没有找到该age的节点");   }  }  void DataObj::printNode(Student* pNode)  {   printf("name = %s, age = %dn", pNode->name, pNode->age);  }  int main()  {   //构造节点   Student* pStu = (Student*) malloc(sizeof(Student));   strcpy(pStu->name, "aaaa");   pStu->age = 30;   pStu->pNext = NULL;   {   DataObj dataObj;   //添加节点   dataObj.add(pStu);   //查找节点   dataObj.find(31);   }   return 1;  }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对<计算机技术网(www.ctvol.com)!!>的支持。如果你想了解更多相关内容请查看下面相关链接

—-想了解C++构造函数和析构函数的使用与讲解分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/482722.html

(0)
上一篇 2020年11月9日
下一篇 2020年11月9日

精彩推荐