C++学习笔记

来源:互联网 发布:linux ntp服务器 编辑:程序博客网 时间:2024/06/06 23:57

C++头文件查询

点击打开链接

关于构造函数

默认构造函数1

默认构造函数2

C++学习书籍推荐

STL学习笔记 STL笔记2


C再学习:http://blog.csdn.net/qq_29350001/article/category/6103806


C/C++内存布局
C与C++的内存机制虽然非常相似,但还是有一些不同的地方。下面让我们一起来看看它们到底有什么区别吧。

(一)C内存机制

1. 栈(Stack):
        位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。
2. 堆(Heap) :
        由程序员用malloc()/calloc()/realloc()分配空间,free()释放所申请的空间。如果程序员忘记free(),则会造成内存泄漏,程序结束时可能会由操作系统回收,也许就一直占用着直至关机。
3. 全局区/静态区(Global Static Area): 
        全局变量和静态变量存放区,程序一经编译好,该区域便存在。并且在C语言中初始化的全局变量和静态变量和未初始化的放在相邻的两个区域(在C++中,由于编译器会给全局变量和静态变量自动初始化赋值,所以没有区分了)。由于全局变量一直占据内存空间且不易维护,推荐少用。程序结束时释放。 
4. C风格字符串常量存储区:
        专门存放字符串常量的地方,程序结束时释放。有的书也叫符号表。
5. 程序代码区:
        存放程序二进制代码的区域。
 
(二)C++内存机制
1. 栈(Stack): 
        位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。
2. 堆(Heap): 
        这里与C不同的是,该堆是由new申请的内存,由delete负责释放。
3. 自由存储区(Free Storage): 
        由程序员用malloc()/calloc()/realloc()分配空间,由free()释放。如果程序员忘记free()了,则会造成内存泄漏,程序结束时可能会有操作系统回收,也许就一直占用着直至关机。 与C的堆机制对应

4. 全局区/静态区(Global Static Area): 

         全局变量和静态变量存放区,程序一经编译好,该区域便存在。在C++中,由于编译器会给全局变量和静态变量自动初始化赋值,所以没有区分初始化和未初始化变量。由于全局变量一直占据内存空间且不易维护,推荐少用。程序结束时释放。

5. 常量存储区:

          这是一块比较特殊的存储区,专门存储不能修改的常量(如果采用非正常手段更改,当然也是可以的)。

特别注意:

为了验证上述,须在编译的时候增加选项-std=c89。为什么?如果没有加-std=c89这个选项,现在的gcc版本一般都是c99标准,c99中增加了很多C++的特性在里面。影响本文验证。

编译器实现问题,有的编译器会把初始化为0的全局或静态变量也作为未初始化的对待。大概是因为未初始化则编译器自动初始化为零的效果一样吧!



1,全新的程序程序思维,C语言是面向过程的,而C++是面向对象的。
2,C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。但你也可能单独调用API。
3,特别是C++中的图形处理,它和语言的图形有很大的区别。C语言中的图形处理函数基本上是不能用在中C++中的。C语言标准中不包括图形处理。
4,C和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;而在VC++中它没有加限定符的为私有的
5、C语言可以写很多方面的程序,但是C++可以写得更多更好,C++可以写基于DOSr程序,写DLL,写控件,写系统。
6,C语言对程序的文件的组织是松散的,几乎是全要程序处理;而c++对文件的组织是以工程,各文件分类明确。
7,C++中的IDE很智能,和VB一样,有的功能可能比VB还强。
8、C++对可以自动生成你想要的程序结构使你可以省了很多时间。有很多可用的工具如加入MFC中的类的时候,加入变量的时候等等。
9,C++中的附加工具也有很多,可以进行系统的分析,可以查看API;可以查看控件。
10、调试功能强大,并且方法多样

原创粉丝点击