VC++系统学习笔记(一)

来源:互联网 发布:docker nginx 配置 编辑:程序博客网 时间:2024/05/17 23:16

简单的回顾一下,我学习过了C、C++,自学过MFC,但是感觉学得不好,所以这学期打算全面系统的复习重学VC++,指导用书是孙鑫编著的《VC++深入详解》。

以下是书中第二章“掌握C++”的学习笔记:

书中讲述了C的结构体是怎样演变成C++中的结构体,进而成为类的。主要体现在struct和class的成员访问控制不同。这之后又讲到了类与对象(实例)的关系,前者抽象不可损毁,后者具体可以损毁。之后因为要对类中的成员变量进行初始化,但又为了减少程序员的工作,就出现了构造函数的概念,它最大的好处在于我们在定义一个类的对象时它自动执行。之后还讲到释放资源用的析构函数。C++中还引入了函数重载的概念,比如可以重载构造函数,这样我们就可以在定义对象时利用实参直接为对象的成员变量进行赋值,快捷高效。除了这个,我们还要意识到类中的成员函数针对具体的对象时,其实隐藏着一个this指针,因此在编写程序的时候我们要注意到它的使用,避免一些错误。

以下是关于几个名词的理解:

堆内存堆内存是区别于栈区、全局数据区和代码区的另一个内存区域。堆允许程序在运行时动态地申请某个大小的内存空间。堆内存和栈内存的区别可以用如下的比喻来看出:使用堆内存就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。使用栈内存就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,它的好处是快捷,但是自由度小。从堆中分配的内存需要程序员手动释放,如果不释放,而系统内存管理器又不自动回收这些堆内存的话,那就一直被占用。

内存泄漏:用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。由程序申请的一块内存,如果没有任何一个指针指向它,那么这块内存就泄露了。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。如果要避免这个问题,还是要从代码上入手,良好的编码习惯和规范,是避免错误的不二法门。一般我们常说的内存泄漏是指堆内存的泄漏。

变量的可见性:变量的可见性就是变量的作用范围。见下面例子:

<span style="font-family:Times New Roman;">void main()   {     int a;     for (int i=0;i<10;i++)a++;   }</span>

在这个小程序中,a对于整个main函数都是可见的,也就是在main中随处可以引用。而变量i只在for中可见,for外不可见,离开for之后不可以引用。


0 0