`
stephenxjc
  • 浏览: 36536 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

    博客分类:
  • 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++面向对象程序设计思想编写的,一个简单的职工信息管理系统,源代码比较简单,适合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. **等价类划分**:在...

    C和C++编程心得

    - **质量考量**: 高质量的源代码不仅易于阅读和维护,还能够提高程序的整体性能。 **我的程序和一般的程序不一样,什么原因————控制台和图形界面的差异** - **界面类型**: 控制台程序和图形用户界面(GUI)...

    C++课程设计报告——Chiuy1

    为了让程序在其他计算机上运行,有两种方式:直接运行源代码(需要安装相应的编译环境,如Qt和MySQL库),或者运行已经打包好的程序(通常包含所有必要的运行时库和依赖)。 选读部分介绍了额外的细节,如Qt事件...

    编译原理实验报告——词法分析器

    源代码中的扫描函数`scaner()`是核心部分,负责识别和处理源代码中的字符,但完整的源代码未在此处提供。 总结来说,本次实验旨在通过实现词法分析器,增强对编译原理的理解,提升实践操作技能,同时暴露了程序的...

    电子信息工程学系实验报告 ——适用于计算机课程

    编译器会检查源代码的语法错误,并在调试信息窗口显示编译信息。如果发现错误,需要根据提示定位并修正错误。 4. 程序执行:编译成功后,生成可执行文件(如“E923.exe”),通过直接运行该文件来查看程序的执行...

    个人中心——类似qq空间

    日志模块更偏向于长篇文章或主题讨论,用户可以在这里发表观点或分享心得。我们可以提供标题、内容、分类和标签等功能,便于用户管理和搜索自己的日志。同样,需要考虑文章的评论和点赞功能,促进用户间的互动。 3...

    分治法的应用——网球循环赛1

    文章提到了使用C++和Qt实现的暴力算法和分治法的源代码,但具体内容未给出。 **三、实验结果分析** 实验结果包括暴力算法和分治法的输出,具体数据未展示。通常,分治法的效率远高于暴力算法,因为它避免了重复计算...

    Visual C++2010入门经典(第5版) 英文文字版PDF 以及 随书源码下载地址

    根据提供的信息,本书配套提供了大约 150MB 的源代码资源,这对于学习者来说是非常宝贵的资料。这些源码覆盖了书中所有章节的示例代码,使得读者能够更好地理解和实践所学知识。 ##### 1. 下载方式 - **链接**:...

    操作系统课程设计——Linux二级文件系统设计

    3、源代码格式规范,注释不少于三分之一 4、设计合适的测试用例,对得到的运行结果要有分析, 5、设计中遇到的问题,设计的心得体会 6、提交完整程序代码、课程设计报告及相关文档 可实现下列命令操作: login dir ...

    VC学习3-我们学习VC的心得与体会

    《VC学习3-我们学习VC的心得与体会》是一份深度探讨Visual C++(简称VC)编程经验的资源集合,其中包含了源代码示例和交流用的PPT,旨在为初学者和进阶者提供宝贵的指导。Visual C++是Microsoft公司开发的一款强大的...

    xingqiu.rar_c++ 九大行星_layersdnn_site:www.pudn.com_九大行星动画

    《九大行星动画——C++与深度学习的奇妙碰撞》 在计算机编程的世界里,模拟现实世界的运动轨迹一直是吸引人们兴趣的领域。这个名为"xingqiu.rar"的压缩包文件,蕴含了一个用C++编写的程序,它巧妙地运用了深度学习...

    数据结构——图书管理系统.docx

    #### 八、源代码分析 - 程序使用C++语言编写,包含了基本的数据结构定义与相关功能的实现。 - 通过`#include`指令引入了必要的标准库文件,如`iostream`、`iomanip`、`string`和`fstream`等,以支持输入输出、格式...

    c++面向对象程序设计家具管理系统程序设计.pdf

    3. 撰写课程设计报告,包括封面、设计任务、目录、设计方案、使用说明、源代码、设计心得等。 五、总体设计 系统主要由以下几个功能模块构成: 1. 名称输入模块:允许用户输入家具的名称或编号。 2. 查找功能模块:...

    高质量C++/C编程指南.pdf

    - **定义文件结构**:阐述源代码文件的组织形式,如变量声明、函数实现等部分。 - **头文件作用**:强调头文件的重要性,比如减少代码重复、提供接口文档等功能。 - **目录结构**:规划项目的目录层级结构,确保文件...

    C实训报告——超市库存管理系统.pdf

    源代码作为附录,展示实现各功能的具体C++代码。 综上所述,该实训报告全面介绍了超市库存管理系统的开发流程,强调了C++编程技巧和面向对象设计思想的应用,是学习和理解软件开发流程的优秀实例。

Global site tag (gtag.js) - Google Analytics