C++:构造函数与析构函数
来源:互联网 发布:怎么用手机开淘宝店 编辑:程序博客网 时间:2024/04/28 22:45
构造函数(constructor)
1.构造函数是种特殊的类成员函数,遵循如下规则:
a.函数名与类名必须相同。
b.没有返回值
例如:class Obj{...public: Obj() { ... }};
2.构造函数可以带参数,也可以重载
class Obj{...public: Obj() { ... } Obj(int x, int y) { ... }};
3.构造函数和普通成员函数不一样,一般不显示调用。在创建一个对象时,构造函数自动调用(编译器来完成)。
析构函数(destructor)
1.析构和构造是一对相反的过程,对象被创建时调用构造函数,对象被销毁时调用析构函数,遵循如下规则:
a.名称固定,类名前加上波浪线~
b.没有返回值
c.不能带参数
例如,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 = %d\n", 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;}
欢迎加群交流:C/C++开发交流
扫码关注公众号"CPP开发之路"
阅读全文
0 0
- c++-构造函数与析构函数
- C++--构造函数与析构函数
- 【c++】构造函数与析构函数
- C++:构造函数与析构函数
- 【C++】初始化与清除(构造函数与析构函数)
- [C++]构造函数与析构函数讲解
- 构造函数与析构函数(C++)
- C语言的构造函数与析构函数
- C++_构造函数与析构函数
- 初识C#——构造函数与析构函数
- 关于Object-c 中的构造函数与析构函数
- C++(构造函数与析构函数)
- C/C++面试题:构造函数与析构函数
- 3.4构造函数与析构函数【C++】
- 【学习C++】学习C++ -> 构造函数与析构函数
- 构造函数和析构函数【c++】
- C++-构造函数,析构函数
- [c++]构造函数和析构函数
- 1027. Colors in Mars (20)
- 大公司的开源项目
- 终于解决了:这个是关于windows下装MYSQL 的驱动,及装完找不到ODBC驱动的解决办法。
- Tensorflow中提供tf.train.ExponentialMovingAverage函数实现(滑动平均模型)
- 面试题55:字符流中第一个不重复的数字
- C++:构造函数与析构函数
- 国内大公司的开源项目
- Myeclipse的使用技术总结
- java守护线程和用户线程的区别
- Spring:源码解读IOC原理
- 找餐饮设计公司 这些要了解透彻
- 平衡二叉树AVL
- 解决arm-none-eabi-gcc运行提示no such file or directory问题
- QT5中文乱码问题记录