源代码阅读心得——c++基础知识
Stephenxjc_千年一笑
2010年8月6日星期五
对象:C++入门级(初学者)
关键字:头文件包含、类对象实例化、参数传递方式、assert、const
核心内容: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++初学者参考。希望对你们有帮助! 目 录 1 前言 3 1.1项目背景 3 1.2问题描述 4 2 需求分析 4 2.1要求 4 2.2任务 4 2.3...
从给定的文件信息来看,本文档主要围绕“语法分析器源代码”展开,深入探讨了语法分析器的构建过程,特别是在C++编程环境下的实现。以下是对文档中提到的关键知识点的详细阐述: ### 实验目的与内容 实验旨在使...
3. **源代码设计**:程序使用了C++语言,通过`while`循环持续接收用户输入的三个整数,然后通过一系列的`if`和`else if`语句判断输入的边长是否符合三角形条件,以及是何种类型的三角形。 4. **等价类划分**:在...
- **质量考量**: 高质量的源代码不仅易于阅读和维护,还能够提高程序的整体性能。 **我的程序和一般的程序不一样,什么原因————控制台和图形界面的差异** - **界面类型**: 控制台程序和图形用户界面(GUI)...
为了让程序在其他计算机上运行,有两种方式:直接运行源代码(需要安装相应的编译环境,如Qt和MySQL库),或者运行已经打包好的程序(通常包含所有必要的运行时库和依赖)。 选读部分介绍了额外的细节,如Qt事件...
源代码中的扫描函数`scaner()`是核心部分,负责识别和处理源代码中的字符,但完整的源代码未在此处提供。 总结来说,本次实验旨在通过实现词法分析器,增强对编译原理的理解,提升实践操作技能,同时暴露了程序的...
编译器会检查源代码的语法错误,并在调试信息窗口显示编译信息。如果发现错误,需要根据提示定位并修正错误。 4. 程序执行:编译成功后,生成可执行文件(如“E923.exe”),通过直接运行该文件来查看程序的执行...
日志模块更偏向于长篇文章或主题讨论,用户可以在这里发表观点或分享心得。我们可以提供标题、内容、分类和标签等功能,便于用户管理和搜索自己的日志。同样,需要考虑文章的评论和点赞功能,促进用户间的互动。 3...
文章提到了使用C++和Qt实现的暴力算法和分治法的源代码,但具体内容未给出。 **三、实验结果分析** 实验结果包括暴力算法和分治法的输出,具体数据未展示。通常,分治法的效率远高于暴力算法,因为它避免了重复计算...
根据提供的信息,本书配套提供了大约 150MB 的源代码资源,这对于学习者来说是非常宝贵的资料。这些源码覆盖了书中所有章节的示例代码,使得读者能够更好地理解和实践所学知识。 ##### 1. 下载方式 - **链接**:...
3、源代码格式规范,注释不少于三分之一 4、设计合适的测试用例,对得到的运行结果要有分析, 5、设计中遇到的问题,设计的心得体会 6、提交完整程序代码、课程设计报告及相关文档 可实现下列命令操作: login dir ...
《VC学习3-我们学习VC的心得与体会》是一份深度探讨Visual C++(简称VC)编程经验的资源集合,其中包含了源代码示例和交流用的PPT,旨在为初学者和进阶者提供宝贵的指导。Visual C++是Microsoft公司开发的一款强大的...
《九大行星动画——C++与深度学习的奇妙碰撞》 在计算机编程的世界里,模拟现实世界的运动轨迹一直是吸引人们兴趣的领域。这个名为"xingqiu.rar"的压缩包文件,蕴含了一个用C++编写的程序,它巧妙地运用了深度学习...
#### 八、源代码分析 - 程序使用C++语言编写,包含了基本的数据结构定义与相关功能的实现。 - 通过`#include`指令引入了必要的标准库文件,如`iostream`、`iomanip`、`string`和`fstream`等,以支持输入输出、格式...
3. 撰写课程设计报告,包括封面、设计任务、目录、设计方案、使用说明、源代码、设计心得等。 五、总体设计 系统主要由以下几个功能模块构成: 1. 名称输入模块:允许用户输入家具的名称或编号。 2. 查找功能模块:...
- **定义文件结构**:阐述源代码文件的组织形式,如变量声明、函数实现等部分。 - **头文件作用**:强调头文件的重要性,比如减少代码重复、提供接口文档等功能。 - **目录结构**:规划项目的目录层级结构,确保文件...
源代码作为附录,展示实现各功能的具体C++代码。 综上所述,该实训报告全面介绍了超市库存管理系统的开发流程,强调了C++编程技巧和面向对象设计思想的应用,是学习和理解软件开发流程的优秀实例。