C++编程思想读后感(四):Data Abstraction
2011-06-08 16:29
295 查看
1、使用库library是提高效率最重要的方式,也是C++最基本的设计初衷
2、堆Heap是指一大块用于运行时实时分配的内存空间,C++使用new和delete来操作堆空间。通常分配内存使用new unsigned char[Bytes],释放使用delete p或delete []pArray(数组)。delete void*最好避免使用,这一操作对于一些简单的系统内建类型不会有问题,但如果void*所指向的对象在析构函数里要释放对象内存在的指针指向内存,进行此操作会丢失内存,因为它不执行析构函数。
3、使用C结构体struct缺点:其一,内部变量缺少保护机制,外部使用可以轻易修改;其二,初始化和结束函数必须由使用者调用,但这些又非语法强制的,依赖使用者个人的自觉行为;其三,C使用单一命名空间,库之间容易冲突
4、所有指针本身的内存空间都是4字节:
5、C++头文件三要点:其一,避免在头文件中定义对象从而造成内存分配,这会导致“重复定义”错误;其二,使用预编译指令防止头文件重复声明(#ifndef,#define#endif);其三,不建议在头文件中使用using指示符,避免造成namespace protection的大面积丧失。
6、假设某局部作用域存在局部变量和全局变量名称一样,要在局部使用该全局变量,必须加上::标识符以标志该变量为全局变量。
7、即使某struct里没有一个成员变量,定义对象后他也会占用1个字节内存,因为C++认为每个对象的地址都应该不一样,否则定义两个连续的空对象以后,难道他们地址也一样?
2、堆Heap是指一大块用于运行时实时分配的内存空间,C++使用new和delete来操作堆空间。通常分配内存使用new unsigned char[Bytes],释放使用delete p或delete []pArray(数组)。delete void*最好避免使用,这一操作对于一些简单的系统内建类型不会有问题,但如果void*所指向的对象在析构函数里要释放对象内存在的指针指向内存,进行此操作会丢失内存,因为它不执行析构函数。
3、使用C结构体struct缺点:其一,内部变量缺少保护机制,外部使用可以轻易修改;其二,初始化和结束函数必须由使用者调用,但这些又非语法强制的,依赖使用者个人的自觉行为;其三,C使用单一命名空间,库之间容易冲突
4、所有指针本身的内存空间都是4字节:
#include <iostream> using namespace std; #define P(x) cout<<#x" = "<<sizeof(x)<<endl; class A { long a; long b; double c; }; int main() { A* pa; void* pv; int* pi; double* pd; P(pa); P(pv); P(pi); P(pd); return 1; } /* pa = 4 pv = 4 pi = 4 pd = 4 Press any key to continue */
5、C++头文件三要点:其一,避免在头文件中定义对象从而造成内存分配,这会导致“重复定义”错误;其二,使用预编译指令防止头文件重复声明(#ifndef,#define#endif);其三,不建议在头文件中使用using指示符,避免造成namespace protection的大面积丧失。
6、假设某局部作用域存在局部变量和全局变量名称一样,要在局部使用该全局变量,必须加上::标识符以标志该变量为全局变量。
7、即使某struct里没有一个成员变量,定义对象后他也会占用1个字节内存,因为C++认为每个对象的地址都应该不一样,否则定义两个连续的空对象以后,难道他们地址也一样?
相关文章推荐
- <<C++编程思想 第2卷>>读后感
- C++编程思想读后感(五):Hiding the Implementation
- C++编程思想读后感(六):Initialization and Cleanup
- C++编程思想读后感(一):Introduction to Objects
- C++编程思想读后感(七):Function Overloading and Default Arguments
- C++编程思想读后感(二):Making and Using Objects
- C++编程思想读后感(八):Constants
- C++编程思想读后感(三):The C in C++
- 《LINUX 、UNIX 设计思想》读后感,前六章
- C++编程思想--动态创建对象(2)
- C++编程思想(2nd卷一):引用和拷贝构造函数
- C++编程思想笔记(0101)。。。
- C++编程思想 第五章隐藏实现 习题
- C++编程思想(卷二):防御性编程
- C++笔记——c++编程思想(上)第四五六章数据抽象、初始化与清除
- C++编程思想--继承与组合
- C++编程思想笔记(1)
- C++编程思想(二)
- c++编程中的调试技巧(C++编程思想)
- C语言中的类模拟(C++编程思想)