您的位置:首页 > 编程语言 > C语言/C++

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字节:

#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++认为每个对象的地址都应该不一样,否则定义两个连续的空对象以后,难道他们地址也一样?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: