- 博客(15)
- 收藏
- 关注
原创 深度探索C++对象模型第五章 构造、解构、拷贝语义学
5.2 继承体系下的对象构造一般而言编译器所做的扩充操作大约如下:1、记录在initializataion list 中的data members 初始化裁做会被放进 constructor的函数本身,并以members 的声明顺序为顺序。2、如果有一个member 没出现在member initialization list 之中,但是他又一个default constructor ,那么
2002-07-01 14:22:00
1299
2
原创 深度探索C++对象模型第四章 Data 语意学
4.1 Member的各种调用方式 Nonstatic Member Functions : 速度和一般的Nonmember function 有相同的效率。 编译器会对nonstatic member function进行改造。加入this参数,改变函数内部的对member data 的使用方法,改变函数的名字--相当于nonmember function . 这里面有一个函数名字的处理
2002-07-01 14:21:00
1048
原创 深度探索C++对象模型第二章 构造函数语义学
2.1 Default Constructor 的建构操作default constructors 在需要的时候才会被编译器产生出来。只有当编译器需要default constructor的时候才会合成出一个constructor, 只有下面的四种情况才会有nontrivial default constructor产生,其余的都是trivial default constructor1)
2002-07-01 14:20:00
1193
原创 深度探索C++对象模型第三章 Data 语意学
C++ standard 不强制规定“base class sunjects的排列次序”“不同存取层记得data members的排列次序” ,也不规定“virtual funcitons 和 virtual base class“的实现细节3.1 Data member 的布局C++ standard要求:在同一个access section 的member 按次序排列,而各自之间不一定
2002-07-01 14:20:00
1063
原创 深度探索C++对象模型第一章 关于对象
C语言中,“数据”和“处理数据的操作”十分开来的。由一组“分布在各个一功能味道想得函数中”的算法所驱动,他们处理的是共同的外部数据。而在C++中,则使用的是独立的“抽象数据类型abstract data type(ADT)”所驱动。从软件工程的角度看“一个ADT或CLASS hierar5chy的数据封装”比"在C程序中程序迎的使用全局数据好"。加上封装后的布局成本C++在布局以及存取时间上的额外
2002-07-01 14:19:00
1425
原创 深度探索C++对象模型第六章 执行其语义学
6.1 对象的构造和解构对象的解构发生在离开当前区域之前,而不是说大括号之前对象数组:编译器调用一个宁为vec_new()的函数,产生出以class object对象构造而成的数组。void * vec_new(void * array, // 数组的起始地址 size_t elem_size, // 每个class object的大小
2002-07-01 14:19:00
1091
原创 深度探索C++对象模型第七章 站在对象模型的尖端
7.1 Template Template的“具现“行为 (template instantiation)编译器看到template的声明,并不做任何的事情,只有等到template instantiation的时候, 定义出一个template class object 或者 template class refrence(引用必须初始化),才会相应的准备template class 内
2002-07-01 14:18:00
1062
原创 STL 之 Introducntion
STL, is a C++ library of container classes, algorithms, and iterators; almost every component in the STL is a template. Containers and algorithmsThe STL includes the classes vector, list, deque,
2002-06-28 13:50:00
1029
原创 STL 之 Container Concepts
Container: 描述:存放各种元素,每个Container必须要有相应的Iterator,元素的存放顺序不定。也许每次Iterator遍历Container的时候,每次的访问顺序都可能不一样,而且Container不能保证在同一时刻有超过一个Iterator有效。Container自己拥有包含的元素(如果是指针Container,那么就仅仅是对指针游泳所有权,而不是指针指向的对象)。Co
2002-06-28 13:50:00
1140
原创 C++编程思想笔记之四
第09章 命名控制一、来自C 语言中的静态成员在C 和C + +中,static都有两种基本的含义,并且这两种含义经常是互相有冲突的:1) 在固定的地址上分配,也就是说对象是在一个特殊的静态数据区上创建的,而不是每次函数调用时在堆栈上产生的。这也是静态存储的概念。2) 对一个特定的编译单位来说是本地的(就像我们在后面将要看到的,这在C++中包括类的范围)。这里static控制名字的可见性
2002-06-17 09:34:00
1380
原创 C++编程思想笔记之一
第1章 对象的演化一、多态性的解释: 当处理类型层次结构时,程序员常常希望不把对象看作是某一特殊类型的成员,而把它看作基本类型成员,这样就可以编写不依赖于特殊类型的代码。在形体例子中,函数可以对一般形体进行操作,而不关心它们是圆、正方形还是三角形。所有的形体都能被绘制、擦除和移动,所以这些函数能简单地发送消息给一个形体对象,而不考虑这个对象如何处理这个消息。这样,新添类型不影响原来的代码
2002-06-17 09:21:00
1847
原创 C++编程思想笔记之三
第7章 常量一、值替代:用C 语言进行程序设计时,预处理器可以不受限制地建立宏并用它来替代值。因为预处理器只做文本替代,它既没有类型检查思想,也没有类型检查工具,所以预处理器的值替代会产生一些微小的问题,这些问题在C + +中可通过使用const而避免。C + +中的const 默认为内部连接,也就是说,const 仅在const 被定义过的文件里才是可见的,而在连接时不能被其他编译单元看
2002-06-17 09:21:00
1426
原创 C++编程思想笔记之五
第10章 引用和拷贝构造函数一、使用引用时有一定的规则:1) 当引用被创建时,它必须被初始化。(指针则可以在任何时候被初始化。)2) 一旦一个引用被初始化为指向一个对象,它就不能被改变为对另一个对象的引用。(指针则可以在任何时候指向另一个对象。)3) 不可能有N U L L 引用。必须确保引用是和一块合法的存储单元关连。 二、参数传递准则当给函数传递参数时,人们习惯上应该是通过常量
2002-06-17 09:21:00
1368
原创 C++编程思想笔记之六
第13章 继承和组合一、继承和组合组合:简单地创建一个包含已存在的类对象的新类,这称为组合,因为这个新类是由已存在类的对象组合的。对于新类的public接口函数,包含对嵌入对象的使用,但不必模仿这个嵌入对象的接口。继承:创建一个新类作为一个已存在类的类型,采取这个已存在类的形式,对它增加代码,但不修改它。二、构造函数和析构函数的次序构造在类层次的最根处开始,而在每一层,首先调
2002-06-17 09:20:00
1480
2
原创 C++编程思想笔记之二
第3章 隐藏实现一、C++的存取控制 public 意味着在其后声明的所有成员对所有的人都可以存取。public成员就如同一般的struct成员。private关键字则意味着,除了该类型的创建者和类的内部成员函数之外,任何人都不能存取这些成员。private在设计者与用户之间筑起了一道墙。如果有人试图存取一个私有成员,就会产生一个编译错误。protected与private基本相似,只有一
2002-06-14 09:26:00
1512
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人