我的C++实践 1.docx

上传人:安*** 文档编号:73266733 上传时间:2023-02-17 格式:DOCX 页数:6 大小:17.21KB
返回 下载 相关 举报
我的C++实践 1.docx_第1页
第1页 / 共6页
我的C++实践 1.docx_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《我的C++实践 1.docx》由会员分享,可在线阅读,更多相关《我的C++实践 1.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、我的C+实践(1zhouhuanshenglaptop-zhou:/zhou/code/cpp_templates/basics$g-Walltracertest.cpp-otracertestzhouhuanshenglaptop-zhou:/zhou/code/cpp_templates/basics$./tracertestTracercreation#1,createdasgeneration1(total:1)Tracercreation#2,createdasgeneration1(total:2)Tracercreation#3,createdasgeneration1(tota

2、l:3)Tracercreation#4,createdasgeneration1(total:4)Tracercreation#5,createdasgeneration1(total:5)Tracercreation#6,createdasgeneration1(total:6)Tracercreation#7,createdasgeneration1(total:7)Tracercreation#8,createdasgeneration1(total:8)Tracercreation#9,createdasgeneration1(total:9)Tracercreation#10,cr

3、eatedasgeneration1(total:10)7356420198-Startstd:sort()-Tracercreation#11,copiedasgeneration2(total:11)Tracercomparison#1(generation21)Tracerassignment#1(generation11)Tracerassignment#2(generation12)Tracerdestruction#1,generation2destroyed(total:10)Tracercreation#12,copiedasgeneration2(total:11)Trace

4、rcomparison#2(generation21)Tracercreation#13,copiedasgeneration3(total:12)Tracercomparison#3(generation31)Tracerassignment#3(generation11)Tracercomparison#4(generation31)Tracerassignment#4(generation13)Tracerdestruction#2,generation3destroyed(total:11)Tracerdestruction#3,generation2destroyed(total:1

5、0)Tracercreation#14,copiedasgeneration2(total:11)Tracercomparison#5(generation21)Tracercreation#15,copiedasgeneration3(total:12)Tracercomparison#6(generation31)Tracerassignment#5(generation11)Tracercomparison#7(generation31)Tracerassignment#6(generation13)Tracerdestruction#4,generation3destroyed(tot

6、al:11)Tracerdestruction#5,generation2destroyed(total:10)Tracercreation#16,copiedasgeneration2(total:11)Tracercomparison#8(generation21)Tracercreation#17,copiedasgeneration3(total:12)Tracercomparison#9(generation31)Tracerassignment#7(generation11)Tracercomparison#10(generation31)Tracerassignment#8(ge

7、neration11)Tracercomparison#11(generation31)Tracerassignment#9(generation11)Tracercomparison#12(generation31)Tracerassignment#10(generation13)Tracerdestruction#6,generation3destroyed(total:11)Tracerdestruction#7,generation2destroyed(total:10)Tracercreation#18,copiedasgeneration2(total:11)Tracercompa

8、rison#13(generation21)Tracerassignment#11(generation11)Tracerassignment#12(generation11)Tracerassignment#13(generation11)Tracerassignment#14(generation11)Tracerassignment#15(generation11)Tracerassignment#16(generation12)Tracerdestruction#8,generation2destroyed(total:10)Tracercreation#19,copiedasgene

9、ration2(total:11)Tracercomparison#14(generation21)Tracerassignment#17(generation11)Tracerassignment#18(generation11)Tracerassignment#19(generation11)Tracerassignment#20(generation11)Tracerassignment#21(generation11)Tracerassignment#22(generation11)Tracerassignment#23(generation12)Tracerdestruction#9

10、,generation2destroyed(total:10)Tracercreation#20,copiedasgeneration2(total:11)Tracercomparison#15(generation21)Tracercreation#21,copiedasgeneration3(total:12)Tracercomparison#16(generation31)Tracerassignment#24(generation11)Tracercomparison#17(generation31)Tracerassignment#25(generation11)Tracercomp

11、arison#18(generation31)Tracerassignment#26(generation11)Tracercomparison#19(generation31)Tracerassignment#27(generation11)Tracercomparison#20(generation31)Tracerassignment#28(generation11)Tracercomparison#21(generation31)Tracerassignment#29(generation11)Tracercomparison#22(generation31)Tracerassignm

12、ent#30(generation13)Tracerdestruction#10,generation3destroyed(total:11)Tracerdestruction#11,generation2destroyed(total:10)Tracercreation#22,copiedasgeneration2(total:11)Tracercomparison#23(generation21)Tracercreation#23,copiedasgeneration3(total:12)Tracercomparison#24(generation31)Tracerassignment#3

13、1(generation13)Tracerdestruction#12,generation3destroyed(total:11)Tracerdestruction#13,generation2destroyed(total:10)Tracercreation#24,copiedasgeneration2(total:11)Tracercomparison#25(generation21)Tracercreation#25,copiedasgeneration3(total:12)Tracercomparison#26(generation31)Tracerassignment#32(gen

14、eration11)Tracercomparison#27(generation31)Tracerassignment#33(generation13)Tracerdestruction#14,generation3destroyed(total:11)Tracerdestruction#15,generation2destroyed(total:10)-Endstd:sort()-0123456789Statistics:std:sort()of10Tracerswasperformedby:15temporarytracersupto12tracersatthesametime(10bef

15、ore)33assignments27comparsionsTracerdestruction#16,generation1destroyed(total:9)Tracerdestruction#17,generation1destroyed(total:8)Tracerdestruction#18,generation1destroyed(total:7)Tracerdestruction#19,generation1destroyed(total:6)Tracerdestruction#20,generation1destroyed(total:5)Tracerdestruction#21

16、,generation1destroyed(total:4)Tracerdestruction#22,generation1destroyed(total:3)Tracerdestruction#23,generation1destroyed(total:2)Tracerdestruction#24,generation1destroyed(total:1)这里“Tracercreation#1,createdasgeneration1(total:1)“表示第1次创立对象直接创立被创立为第generation份拷贝首次创立时表示第1份拷贝以后调用复制构造函数时拷贝份数会增加total表示现存

17、对象的总个数。“Tracercreation#11,copiedasgeneration2(total:11)“表示第11次创立对象通过复制构造函数创立被复制为第generation份拷贝。“Tracercomparison#1(generation21)“表示第1次比拟比拟左边对象的第2份拷贝是否小于右边对象的第1份拷贝。“Tracerassignment#1(generation11)“表示第1次赋值把右边对象的第1份拷贝赋给左边对象的第1份拷贝。“Tracerdestruction#1,generation2destroyed(total:10)“表示第1次销毁对象当前对象的第2份拷贝被

18、销毁。从最后的统计报告中可以看出对10个对象运行std:sort算法进展排序总共创立了15个临时对象但在同一时刻最多只存在2个多余的对象最多有12个减去要排序的10这让我们对算法的开销有了根本的把握。运行也讲明了我们的tracer完全知足标准sort()算法的要求例如不需要运算符以及运算符。从输出的排序结果可以看出根本上没有问题。十分要注意这只是一个大概的判断它并不能断定算法的内部代码实现的完全正确性。对tracer增加断言以及推理或连接到推理引擎是一个程序可以记住用来推导出结论的断言以及推理等就可以扩展成所谓的oracles测试谕示。oracles可以动态地验证算法它不需要完全指定模板实参o

19、racles本身就是实参也不需要在程序中指定输入数据推理引擎会恳求用户来输入。当前使用oracles对算法复杂度的分析也是非常有限的。tracer是跟踪模板所需要的最小接口。当tracer不产生运行期输出时我们有时也称之为archetype原型。利用archetype我们可以验证模板是否会恳求不符合期望的语法约束。对于一个模板的实现我们一般要为模板库中标记的每个concept都开发一个archetype。多态polymorphism是指具有多种形态的情况它能根据单一的标记关联不同的行为。多态是面向对象程序设计的根底。在面向对象程序设计中的多态是一种运行时的多态。C中有两种多态称为动多态运行时多

20、态以及静多态编译时多态而静多态主要通过模板来实现宏也是实现静多态的一种途径。其实在做软件设计时静多态的威力也是非常强大的只不过我们经常对它忽略了而已。动多态的设计思想对于相关的对象类型确定它们之间的一个共同功能集然后在基类中把这些共同的功能声明为多个公共的虚函数接口。各个子类重写这些虚函数以完成详细的功能。客户端的代码操作函数通过指向基类的引用或者指针来操作这些对象对虚函数的调用会自动绑定到你实际提供的子类对象上去。下面以几何对象的设计为例。对各种几何对象如圆、矩形、直线等都有一些共同的操作比方画出几何对象有重心等我们把这些接口抽象成虚函数放在所谓的抽象基类GeoObj中详细的几何对象类那么继承这个抽象基类。如下

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 工程图纸

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁