<b>c++智能指针的成立</b>[VC/C++编程]
本文“<b>c++智能指针的成立</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
zero 坐在餐桌前,机械的反复“夹菜 -> 咀嚼 -> 吞咽”的行动序列,脸上用无形的大字写着:我漫不经心.在他的对面坐着 Solmyr ,慢条斯理的吃着他那份午饭,保持着他一贯很有涵养的形象 ——— 大概按照 zero 这些熟习他本质的人的说法:假象.
“怎么了 zero ?胃口不好么?”,基本填饱肚子之后,Solmyr 认为仿佛应当关心一下他的学徒了.
“呃,没什么,只是 …… Solmyr ,C++ 为什么不支持垃圾汇集呢?(注:垃圾汇集是一种机制,保证动态分配了的内存块会自动释放,Java 等语言支持这一机制.)”
Solmyr 叹了口吻,用一种安静的眼神盯着 zero :“是不是在 BBS 上和人吵 C++ 和 Java 哪个更好?并且吵输了?我早奉告过你,这种争辩再无聊不过了.”
“呃 …… 是”,zero 不得不承认 ——— Solmyr 的眼神固然一点也不锋利,但是却莫名其妙的让 zero 产生了微微的惊骇感.
“并且,谁奉告你 C++ 不支持垃圾汇集的?”
“啊!Solmyr 你不是开玩笑吧?!”
“zero 你得改变一下见解.我问你,C++ 支不支持可以动态改变大小的数组?”
“这 …… 好象也没有吧?”
“那 vector 是什么东西?”
“呃 ……”
“支持一种特点,并非说非得把这个特点加到语法里去,我们也可以挑选用现有的语言机制实现一个库来支持这个特点.以垃圾汇集为例,这里我们的任务是要保证每一个被动态分配的内存块都可以被释放,也就是说 ……”,Solmyr 不知从那边找出了一张纸、一支笔,写到:
int* p = new int; // 1 delete p; // 2
“也就是说,关于每一个 1 ,我们要保证有一个 2 被调用,1 和 2 必须成对呈现.我来问你,C++ 中有什么东西是由语言本身保证一定成对呈现的?”
“……”,zero 暴露了勤奋搜索记忆的表情,不过很明显一无所获.
“提醒一下,和类的成立有关.”
“哦!构造函数与析构函数!”
“精确.惋惜普通指针没有构造函数与析构函数,所以我们必必要写一个类来加一层包装,最简单的就象这样:”
class my_intptr
{
public:
int* m_p;
my_intptr(int* p){ m_p = p; }
~my_intptr(){ delete m_p; }
};
…………
my_intptr pi(new int);
*(pi.m_p) = 10;
…………
以上是“<b>c++智能指针的成立</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |