
c++开发学习
关于C++,关于stl,关于程序与设计。
Kevin_Leong
这个作者很懒,什么都没留下…
展开
-
有效使用STL的经验
摘自《effective stl》关于STL的使用原则,以后还会再补充。容器条款1:仔细选择你的容器条款2:小心对“容器无关代码”的幻想条款3:使容器里对象的拷贝操作轻量而正确条款4:用empty来代替检查size()是否为0条款5:尽量使用区间成员函数代替它们的单元素兄弟条款6:警惕C++最令原创 2016-06-12 14:51:40 · 1289 阅读 · 0 评论 -
c++对象模型研究7:站在对象模型的顶端
template在C++发明阶段,C++之父Stroustrup和贝尔实验室的C++小组对原先的宏方法进行了修订,对其进行了简化并将它从预处理范围移入了编译器。这种新的代码替换装置被称为模板,而且它变现了完全不同的代码重用方法:模板对源代码重用,而不是通过继承和组合重用对象代码。当用户使用模板时,参数由编译器来替换,这非常像原来的宏方法,却更清晰,更容易使用。未使用的tem原创 2016-06-21 14:44:44 · 652 阅读 · 0 评论 -
c++对象模型研究6:执行期
C++的一件困难事情:不太容易从程序代码看出表达式的复杂度。执行期语意学,即在程序执行时,编译器产生而外的指令调用,确保对象的构造,内存的释放,以及类型转换与临时对象的生成的安全进行。对象的构造和析构一般而言,我们会把对象尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生操作和摧毁操作(主要是析构)。不建议把所有的对象放在函数或某个区段的起始处。原创 2016-06-20 20:23:33 · 1607 阅读 · 1 评论 -
c++对象模型研究5:构造、解构、拷贝
纯虚函数虚函数是为了重载和多态的需要,子类中可以重写或不重写该函数;纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像Java中的interface。无继承情况下的对象构造参考:《深度探索C++对象模型》http://blog.youkuaiyun.com/ChinaJane163/article/details/50119625员数据参考:《深度探索C++对象模型》http://blog.youkuaiyun.com/ChinaJane163/article/details/501原创 2014-03-05 17:06:22 · 1674 阅读 · 0 评论 -
c++对象模型研究4:函数
成员的各种调用方式一路走来,virtual函数貌似是用函数指针实现。或许虚函数掌握起来比函数指针要简单很多。貌似虚函数的性能要略低于函数指针。以我的理解,c偏向于算法设计,c++偏向于业务。非静态成员函数c++的设计准则之一就是:非static成员函数 要与一般的非成员函数有相同的效率。非static成员函数其实都是最后被编译器转化成非成员函数的原创 2013-08-21 10:21:45 · 1101 阅读 · 0 评论 -
c++对象模型研究3:数据
开始前先看看class X {};class Y:public virtual X {};class Z:public virtual X {};class A:public Y,public Z {};上述X,Y,Z,A中没有任何一个class内含明显的数据,其间只表示了继承关系。按照书上的例子sizeof X = 1sizeof Y = 8sizeof Z = 8s原创 2016-06-16 12:01:35 · 1037 阅读 · 0 评论 -
c++对象模型研究2:构造函数
关键词explicit之所以被导入这个语言,就是为了提供给程序员一种方法,使他们能够制止“单一参数的构造函数”被当做一个转换运算符。默认构造函数的构建操作以下四种情况类会被生成“有用的”默认构造函数a.一个带有默认构造函数的成员对象类 合成的默认构造函数是以inline的方式完成的,如果函数太复杂则会做成非inline的static实体b.带有默认构造函数的基类原创 2016-06-15 11:39:09 · 750 阅读 · 0 评论 -
改善程序与设计的具体做法(C++)
摘自《effective c++》习惯使用C++条款1:C++有哪些内容?C、C with Classes、模板、STL。条款2:尽量以const、enum、inline替换#define条款3:尽可能使用const条款4:确定对象使用前已先被初始化构造/析构/赋值条款5:了解C++默认编写原创 2012-09-26 09:51:11 · 1573 阅读 · 0 评论 -
c++对象模型研究1:关于对象
关于对象C++在布局以及存取时间上主要的额外负担是由virtual引起,包括1.虚函数机制(执行时绑定)2.虚基类。还有一些多重继承下的额外负担。C++对象模式在C++中,有两种类成员数据:static和非static,以及三种类成员函数:static、非static和virtual。在C++对象模型中,非static成员数据被配置于每一个类对象之内,static成原创 2016-06-14 14:55:55 · 686 阅读 · 0 评论