微信号:gh_5f9337df4e69

介绍:讨论和学习C/C++的编程知识

第五十六讲 迭代器(1)

2014-04-09 22:44 零灵柒

任何一样新事物的诞生总是需要千千万万个疑问,带着问题去上路,总比漫无目的的游走要好得多,至少,我们是有的放矢,所以现在我们来思考这个问题:
------------------------------
My_Array<SpreadSheetCell>* m_Array = new My_Array<SpreadSheetCell>(10);
My_Point<SpreadSheetCell> m_ptr(m_Array,3);
delete m_Array;
*m_ptr = "hello";
------------------------------
My_Array是我们自定义的一个类,他的作用是拿来构建一个数组,我们在堆上动态构建一个包含10个SpreadSheetCell的数组,然后我们在定义一个指针(My_Point是我们的指针类,这就是我们要所说的类似于内建指针的东西),让他指向m_Array的第三个元素,然后我们再把m_Array删掉,最后我们再给m_ptr所指向的元素赋值,这听起来很夸张,很疯狂的样子,堆上创建的东西都被我们删了,m_ptr不是已经悬空了吗?哦,对了,我们好像刚才学习过引用计数的一种技术,那么是不是可以考虑派上用场了呢?这就是大家今天要思考的问题。
带着上面的问题,大家去思考我们该怎么才能让上面的这段代码运行起来,同时让他实现上面我们所说的功能,My_Array和My_Point是我们要实现的,当然,为了能够让上面程序顺利运行,我们或许可能还要再回去看看我们的SpreadSheetCell。
今天有些感冒,头晕脑胀身软,所以就偷闲一下,大家也好好思考这个问题,很有意思,如果大家能够让上面程序运行,那么接下来我们说标准模板库的时候大家就会更好理解,我希望大家知道,我们现在所做的一切,都是在为标准模板库做准备,因为当说完标准模板库时,我们C++的内容也算是差不多了。
==================
回复D直接查看目录

 
C/C++的编程教室 更多文章 写在开篇 第一讲 Hello World 第二讲 printf()(1) 第三讲 printf()(2) 第四讲 scanf()
猜您喜欢 《神秘的程序员们》漫画连载25-文档问题 SALTSTACK--第二章 【第247期】为什么产品开发需要做用户体验研究? PHP之OPP解读 浅谈 Android 多平台发展(下)