设为首页 加入收藏

TOP

C++ Built-In Array 的语义(二)
2015-07-20 17:43:37 来源: 作者: 【 】 浏览:3
Tags:Built-In Array 语义
r *arrayStartAddress)
?
? ? ? ?{
?
? ? ? ? ? ? ?int lastCreated = -1;
?
? ? ? ? ? ? ?try
?
? ? ? ? ? ? ?{
?
? ? ? ? ? ? ? ? ? ? ?for(int i = 0; i < array_size; ++i)
?
? ? ? ? ? ? ? ? ? ? ?{
?
? ? ? ? ? ? ? ? ? ? ? ? ? ?void *objAddr = arrayStartAddress + i * array_element_size;
?
? ? ? ? ? ? ? ? ? ? ? ? ? ?Ctr(objAddr);
?
? ? ? ? ? ? ? ? ? ? ? ? ? ?lastCreated = i;
?
? ? ? ? ? ? ? ? ? ? ?}
?
? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? catch(...)
?
? ? ? ? ? ? ? {
?
? ? ? ? ? ? ? ? ? ? // destroy partially created array in case or fault
?
? ? ? ? ? ? ? ? ? ? for(int i = 0; i <= lastCreated; ++i)
?
? ? ? ? ? ? ? ? ? ? {
?
? ? ? ? ? ? ? ? ? ? ? void *objAddr = arrayStartAddress + i * array_element_size;
?
? ? ? ? ? ? ? ? ? ? ? Dtr (objAddr);
?
? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ?}
?
? ? ? ?}
?
?比较伪码我们看出:Vector_constructor_iterator_with_dtor 和 Vector_constructor_iterator 的主要区别是增加了异常处理的机制,用来销毁“已经构造”的矩阵元素。
?
运行 TestArraySemantics 表明,带有destructor的类的array构造速度下降了近 300%。
?
所以,去除不必要的destructor的重要性又一次充分体现。
?
结论
C++ built-in array对class object的支持是十分重要的语言构造,它是C++把class object和原始变量同样对待的又一反映,它大大增加了C++的附加值。
?
然而我们一如既往,需要对C++这一语言构造的语义深入了解。以便正确使用C++ built-in array。
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 12086 - Potentiometers (树.. 下一篇hdu 4731 Minimum palindrome(构..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)