My insight C++——C++中的隐式计数

tomato_potato 2008-09-24 10:46:07
加精
<!--[if gte mso 9]> Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 <![endif]--><!--[if gte mso 9]> <![endif]-->

C++是一种广泛使用的语言,也曾有兴趣略作研究。因为最近一段时间估计不会用它进行开发了,静下心来,谈谈我对它的理解或是发现。



(1) 引子

本文谈一谈C++中的隐式计数。隐式计数是一个计数器,因为他的储存空间没有显示的体现在程序代码中,故称之为“隐式”,而“计数”是说该存储空间的功能。这么一说,你首先想到的可能是C++中的new []和delete []操作符,不错,用new分配一个数组时,正是使用了“隐式计数”,才使得delete该数组指针时,能够获取到数组元素的个数,请看下面的代码,或许你并不陌生:

struct Test

{

Test() { cout << "Test()" << endl; }

~Test() { cout << "~Test()" << endl; }

};

int main()

{

Test *p = new Test[2];

*((int *)p - 1) = 1;

delete[] p;

return 0;

}

看看输出吧,构造函数被调用两次,析构函数被调用一次(在VC6.0和gcc中均是如此),毫无疑问,(int *)p - 1的位置就是一个计数器,它记录了数组数组元素的个数。


更多精彩点击
...全文
1747 74 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
testing2007 2011-01-12
  • 打赏
  • 举报
回复
等有时间,看看,先MRAR一下,看看c++隐式计数到底是怎么一回事。
wilson135 2010-11-18
  • 打赏
  • 举报
回复
很不错,值得顶!!
lihuize123 2008-11-26
  • 打赏
  • 举报
回复
搂主最后那个程序实例有没有运行成功呢?是针对某个编译器起作用吧?
mdzhao 2008-11-25
  • 打赏
  • 举报
回复
长点见识
phil1984 2008-11-24
  • 打赏
  • 举报
回复
长见识
uestcshe 2008-11-22
  • 打赏
  • 举报
回复
学习
fengwanzk 2008-11-22
  • 打赏
  • 举报
回复
领教了,看来自己不是一般的无知啊。。。。
test_000_013 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 190 楼 MSTOP 的回复:]
引用 189 楼 test_000_012 的回复:
引用 184 楼 kkkgho 的回复:
版主也是人,他们没拿工资,为什么要为你服务?

他们是为CSDN服务的

各位版主的奴才意识相当到位...............

这鸟人真是已贱到了无可复加....
看来我不日你妈你都不知道谁是你爹了.
[/Quote]

看看此版主的此等留言.............

更多版主的更多精彩留言就在下面链接:

http://topic.csdn.net/u/20081119/11/bda8bc5d-98d0-45ee-a1c1-86209d7f121d.html?seed=1991168656#replyachor

SimonYeung 2008-11-21
  • 打赏
  • 举报
回复
MARK 学习一下
dnhan 2008-11-21
  • 打赏
  • 举报
回复
受教了!
niuben1024 2008-11-19
  • 打赏
  • 举报
回复
感谢楼主分享经验
xyjsys 2008-11-19
  • 打赏
  • 举报
回复
不错 仔细思考
xyjsys 2008-11-19
  • 打赏
  • 举报
回复
楼主好人啊 感动ing
giftfish 2008-11-18
  • 打赏
  • 举报
回复
compiler dependents
zsgorsino 2008-11-18
  • 打赏
  • 举报
回复
顶 学习一下
deerwin1986 2008-11-18
  • 打赏
  • 举报
回复
先顶再看!!
wzyzb 2008-11-18
  • 打赏
  • 举报
回复
麻仁棵
eyes_nj 2008-11-18
  • 打赏
  • 举报
回复
学习一下
thorhero 2008-11-17
  • 打赏
  • 举报
回复
谢谢
赵Andy 2008-11-17
  • 打赏
  • 举报
回复
mark
加载更多回复(52)

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧