源代码阅读心得——c++基础问题的讨论

源代码阅读心得——c++基础知识

Stephenxjc_千年一笑

201086日星期五

对象:C++入门级(初学者)

关键字:头文件包含、类对象实例化、参数传递方式、assertconst

核心内容:c++基础问题的讨论

平台:

思想:之前学过c++,但有点忘了,写出来的代码出了一堆错。通过看别人的源代码,快速回忆基础知识

正文:

1        #ifndef #define #endif

采用#ifndef #define #endif来避免重复包含相同头文件。

2        类对象的实例化

类对象实例化的两种方式:

 

方式一

 

方式二

 

 

 

class *a = new a();

 

class a;

 

 

 

在堆中存放

 

在栈中存放

 

 

 

需要通过delete释放内存。在作用域结束前,最好主动调用delete来释放,否则,指针a被销毁,于是,没有指针指向分配到的堆内存,最终导致内存泄露。当然,如果指针a的值已经传到作用域范围外,不属于内存泄露,仍然能够显示调用delete释放内存。

 

不需要通过delete释放内存,在作用域结束时,自动调用析构函数,释放内存

 

 

 

内存占用比较大的对象,最好利用new方式分配,在不用时,就释放,可以最大化内存的使用

 

内存占用比较小的对象,可以采用这种方式,相对比较简单。当然也可以使用方式一,但会比较麻烦

 

 

 

在程序结束时,会将分配给程序的所有内存,包括内存泄露,都回收

 

3        传值、传址、传引用

1)        传值方式:采用复制的方式传递函数参数或函数返回值。需要分配参数类型大小的空间。

2)        传址:只需要分配指针所占用的内存空间即可。

3)        传引用:并没有分配内存空间,只是一个别名而已。

 

4        const

1)        用于修饰对象,保证对象值不被修改。如

const int a=10;表示a为常量变量,值不能被修改。在定义时,必须初始化。

const int a();表示返回的值为常量,不能够被修改。但并不是所必须赋值给常量,如const int b = a();通常使用情况是:const int & a();由于返回了引用,为了防止引用修改函数内部的值,所以强调返回值为常量,不被修改。

 

2)        用于修饰类成员函数,保证类成员变量的值不被修改。

int a() const;

 

5        assert

1)        断言,当条件成立时,继续运行。否则,输出出错位置,并终止程序。

2)        断言只是对debug有效,对于release则无效。

3)        作用:可以更好的在debug时发现错误,所以应该尽可能的使用assert,以便在debug中确定出错位置

4)        通常需要断言的情况:

文件打开前,文件打开后都要断言

命令行输入通常需要判断

函数传入的参数,通常需要断言,保证传入的参数符合条件

 

迅捷是一个功能强大的C/C++源代码分析软件。可以处理数百万行的源程序代码。支持标准及K&R风格的C/C++。对每一个源代码工程,通过建立一个包含丰富交叉引用关系的数据库,显示其所含的各种信息:所有的源文件、所有的头文件、词汇索引、文件包含关系、宏定义、数据结构和函数定义、分文件夹的定义目录、构造层次、函数调用关系、诊断性输出等。仅须按一键就可以非常方便地扩展各种类型的定义和调用关系。所有这些结合起来帮助用户快速地阅读、理解、研究和维护大规模的源代码工程。 包含各种友好的用户界面效果,如对窗口的标签化排列、任意分隔、自动隐藏、浮动、拖拉等。可以使用户快速地找到每一个功能性窗口并重新以各种格局加以任意组合。 包含有一个多功能的文本及十六进制编辑器。便利性特色包括:句法着色、自动完成词汇、对整个内容的自动格式化。可以动态地显示一个文件中的标示词。可以设置多个文件定义来指定对文件的处理、颜色及样式等。可以较快地定位当前或以前打开的某个文件。 包含一个可以同时打开多个工程的工作区,有许多命令可以处理某一个或所有的工程。有强大的功能可以同时在多个文件、文件夹、工程中进行后台查找和替换。 包含一个强大的比较模块,可以进行文件间或文件夹间的后台对比。提供有许多命令来显示目标之间的差别。
迅捷是一个功能强大的c/c++源代码阅读和维护软件。可以处理数百万行的源程序代码。支持标准及k&r风格的c/c++。对每一个打开的源代码工程,通过建立一个包含丰富交叉引用关系的数据库,显示其所含的各种信息:所有的源文件、所有的头文件、词汇索引、文件包含关系、宏定义、数据结构和函数定义、函数调用关系、分文件夹的定义目录、构造层次、诊断性输出等。仅须按一键就可以非常方便地扩展各种类型的定义和调用关系。所有这些结合起来帮助用户快速地阅读、理解、研究和维护中大型源代码工程。 包含各种友好的用户界面效果,如对窗口的标签化排列、任意分隔、自动隐藏、浮动、拖拉等。可以使用户快速地找到每一个功能性窗口并重新以各种格局加以任意组合。 包含有一个多功能的文本及十六进制编辑器。便利性特色包括:句法着色、自动完成词汇、对整个内容的自动格式化以提高可读性。可以动态地显示一个文件中的标示词。可以设置多个文件定义来指定对文件的处理、颜色及样式等。可以较快地定位当前或以前打开的某个文件。 包含一个可以同时打开多个工程的工作区,有许多命令可以处理某一个或所有的工程。有强大的功能可以同时在多个文件、文件夹、工程中进行后台查找和替换。 包含一个比较模块,可以进行文件间或文件夹间的后台对比。提供有许多命令来显示目标之间的差别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值