首页 > 代码库 > c++实现list类(第一次用类) —— new对象需delete
c++实现list类(第一次用类) —— new对象需delete
一:起因
(1)拿出自己年初实现的list,第一次用c++类实现list或者说第一次写一个工程上用到的list类,在和如今实现的list对比,心情无比复杂;
(2)说明了一点,我也曾经幼稚过,现在还比较幼稚,但我相信,只要坚持最初梦想的人,终究会走向成熟;
(3)更加详细的比较全的list 请看 STL list类源代码实现
(4)再次感谢自己能坚持最初的梦,相信你也有一个类似的梦;不要羡慕别人天赋,别人的成功是无法复制的,别人的辉煌是不会重演的;唯有我们自己脚踏实地的走好每一步,播下我们自己梦想的种子,大步向前。
二:详细代码如下:以下是代码和一些个人心得,欢迎大家指点~
(1)LinkList类的简单实现
struct Node { int data; Node *next; }; class LinkedList { public: LinkedList(const int &n);// n 链表长度 LinkedList(const LinkedList &aplist); ~LinkedList(); void display(); void insert_before(const int &key,const int &toinsert); void del(const int &todelete); Node* find_key(const int &key); void distroy(); int getLength(); private: Node *head; Node *cur; };// 类的后面和 结构体一样,必须加 分号 (;) LinkedList::LinkedList(const int &n) { head = new Node; head->data = http://www.mamicode.com/-1;// 此元素是一个标示符>(2)main函数的测试#include <iostream> using namespace std; // 主函数开始,main() int main() { int len,todelete,key,toinsert,tofind;// 当然也可以把一些变量同意命名为opt_key Node *tmp; int cp; cout << "请输入所要建立链表的长度:" << endl; cin >> len; LinkedList *list = new LinkedList(len);// new 出来的对象,用指针指向 list->display();// 不能用list.display()的 //LinkedList list = LinkedList(len); //list.display();// 注释的语句也是对的,但是必须都得改为 list.xxx; //而且new的对象(在堆上)必须手动delete,否则不调用析构函数,非new出来的对象,自动调用析构函数 cout << "请输入所要删除的元素:" << endl; cin >> todelete; list->del(todelete); list->display(); cout << "请输入所要查找的元素:" << endl; cin >> tofind; tmp = list->find_key(tofind); cout << "查找后返回main()的结果:" << tmp->data << endl; list->display(); cout << "请输入所要插入的元素和其右侧元素:" << endl; cin >> toinsert >> key; list->insert_before(key,toinsert); list->display(); cout << "销毁前的链表长度:"; cout << list->getLength() << endl; list->distroy(); cp = list->getLength(); cout << "销毁后的链表长度:"; cout << cp << endl; //list->~LinkedList();// 本以为是析构函数是不可以自动调用的, //其实不然,课本上明明说析构函数是可以自动调用的,但是有一个前提:对象的生存期即将结束的时 //在函数结束时调用(栈内存即将销毁时),堆内存中对象是在delete时调用 delete list; return 0; }
三:心得和体会(1)在C++中,普通的对象离开它的作用域之后,它的析构函数会被自动调用,从而销毁这个对象,释放它所占的内存,不会发生内存泄露的问题。
(2)new命令可以为对象在内存中动态分配一定的空间,并返回分配空间的首地址;如果在程序运行结束之前没有用delete来销毁这些对象,释放它们所占
用的空间也会发生内存泄露。
(3)看到自己上面写的两条心得和体会,自己也扑哧笑了;再看自己写的代码 —— main函数和LinkList类竟然在一起;看来我当初真的幼稚了很多;
(4)再看看现在写的代码,完全不一样了,不过我还是感谢当初的我,那时的我选择的路;成熟是建立在幼稚的基础上的。
(5)最后摘抄的一句话,与大家共享 : 当你的才华撑不起你的野心时,只有静下心来好好学习! 纵使命运注定是个打酱油的,也要打一瓶与别人不一样的酱油!
c++实现list类(第一次用类) —— new对象需delete
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。