C++
文章平均质量分 72
C_plus_learner
这个作者很懒,什么都没留下…
展开
-
深入探索C++对象模型 之 关于对象(Object Lessons)
2004年12月4日11:34:42众所周知c++是一个多范性的语言。包括:过程性的,抽象数据类型(ADT,Object-Based),面向对象的(Object-Oriented)。所谓过程性的程序设计方法就是传统的c程序的设计方法:数据和处理数据的操作是分开来声明的。而Object-Based的程序设计方法把数据和操作封装在一起(如String class),他不支持类的扩充,也就没有多态形原创 2004-12-04 13:19:00 · 3178 阅读 · 1 评论 -
深度探索C++对象模型 之 构造函数语意学
explicit被引入C++是为了使程序员能够制止“单一参数的constructor函数”被当做一个conversion 运算符。有四种情况:1.带有default constructor 的member classobject2.带有default constructor 的base class3.带有一个virtual function 的class4.原创 2004-12-12 20:31:00 · 2581 阅读 · 0 评论 -
深入探索C++对象模型 之 构造,解构,拷贝语意学
纯虚拟函数的存在一个pure virtual function 能被定义和静态地调用,不能经由虚拟机制调用。但是要不要定义又class 设计者决定。唯一例外的情况是pure virtual destructor ,class 设计者一定得定义它,因为一个derived class destructor 会被编译器加以扩展,以静态调用的方式调用其“每一个virtual base class”以及原创 2004-12-21 15:02:00 · 1954 阅读 · 0 评论 -
深入探索C++对象模型 之 执行期语意学
在C++ 中的一件很困难的事,就是不太容易从程序代码看出表达式的复杂度。如下面语句:if ( yy.operator = = ( xx.getValue () ) ) )将被扩展为下面这样的C++伪码:{ X temp1 = xx.getValue (); Y temp2 = temp1.operator Y(); Int temp3 = yy.operator = =原创 2004-12-23 10:26:00 · 1601 阅读 · 0 评论 -
深入探索C++对象模型 之 Data语意学
Data Member 的绑定一个inline 函数实体,在整个class 声明未被完全看见之前,是不会被评估求值的。但是,这对于member function 的 argument list 并不为真。Argument list 中的名称还是会在它们第一次遭遇时被适当地决议完成。因此在extern 和nested type names 之间的非直觉绑定操作还是会发生。 Data Me原创 2004-12-16 15:34:00 · 2010 阅读 · 0 评论 -
深入探索C++对象模型 之 Function语意学
名称的特殊处理(Name Mangling)如member:class bar{public: int ival; …}class foo :public class bar {public: int ival; …}经处理后:class foo{public:int ival_3bar;int ival_4foo;}如function:class po原创 2004-12-20 08:29:00 · 3033 阅读 · 0 评论 -
深入探讨C++对象模型 之 站在对象模型的尖端
Template:Template 的二个问题:1. template 的声明。当编译器看到一个template 声明时,编译器什么反应都没有。一切都不可用,只有通过template 的某个实体来存取或操作。2. template 的具现。Point fPoint;//产生一份实体与Point class 的float instantiation 在程序中原创 2004-12-23 21:44:00 · 1632 阅读 · 0 评论 -
OOD启示录
(1)所有数据都应该隐藏在所在的类的内部。p13 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。p15 (3)尽量减少类的协议中的消息。p16 (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。 p16 (5)不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。p17 如果类的原创 2005-01-12 20:16:00 · 3789 阅读 · 1 评论 -
Effective C++
条款1:尽量用const和inline而不用#define条款2:尽量用而不用条款3:尽量用new和delete而不用malloc和free条款4:尽量使用c++风格的注释条款5:对应的new和delete要采用相同的形式条款6:析构函数里对指针成员调用delete条款7:预先准备好内存不够的情况条款8: 写operator new和operator delete时要遵循常规条款9: 避免原创 2005-01-12 20:11:00 · 1622 阅读 · 0 评论