c++构造函数和析构函数的使用与讲解

  

<>强构造函数(构造函数)

  

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

  
      <李>,,,,a。函数名与类名必须相同。   <李>,,,,李b。没有返回值   
  

例如:         类Obj   {   …   公众:   Obj ()   {   …   }   };      

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

        类Obj   {   …   公众:   Obj ()   {   …   }   Obj (int x, int y)   {   …   }   };      

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

  

<强>析构函数(破坏者)

  

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

  
      <李>,,,一。名称固定,类名前加上波浪线~   <李>,,,李b。没有返回值   <李>,,,李c。不能带参数   
  

例如,         类Obj   {   公众:   ~ Obj ()   {   }   };      

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

  

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

  

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

  

创建DataObj.h头文件

        的ifndef _OBJECT_H_   #定义_OBJECT_H_   结构体的学生   {   char[32]名称;   int年龄;   学生* pNext;   };   类DataObj   {   公众:   DataObj ();   ~ DataObj ();   空白添加(学生* pStu);   空白找到(int年龄);   空白printNode(学生* pNode);   私人:   学生m_head;   };   # endif      

创建DataObj.cpp源文件

        # include & lt; stdio.h>   # include & lt; string.h>   # include & lt; stdlib.h>   # include“DataObj.h”//构造有头链表   DataObj: DataObj ()   {   m_head。pNext=零;   }   DataObj:: ~ DataObj ()   {//指向每个节点的头部   学生* p=m_head.pNext;//释放所有节点   而(p)   {   学生*下=p→pNext;   自由(p);   p=下一个;   }   }   空白DataObj:添加(学生* pNode)   {//指向每个节点的头部   学生* p=, m_head;//通过头节点查找到链表尾部节点   而(p)   {   如果(p→pNext==NULL)   {   打破;   }   p=p→pNext;   }//添加节点到尾部   p→pNext=pNode;   }   空白DataObj::找到(int年龄)   {//标记是否找到   bool bFind=false;   学生* p=, m_head;   而(p)   {   如果年龄(p→年龄==)   {   bFind=true;   printNode (p);   }   p=p→pNext;   }   如果(! bFind)   {   printf("没有找到该年龄的节点”);   }   }   空白DataObj: printNode(学生* pNode)   {   printf (" name=% s,年龄=% d \ n”, pNode→名称、pNode→年龄);   }   int main ()   {//构造节点   学生* pStu=(学生*)malloc (sizeof(学生);   strcpy (pStu→名称,“aaaa”);   pStu→年龄=30;   pStu→pNext=零;   {   DataObj DataObj;//添加节点   dataObj.add (pStu);//查找节点   dataObj.find (31);   }   返回1;   }      

<强>总结

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

c++构造函数和析构函数的使用与讲解