`
stephenxjc
  • 浏览: 36044 次
  • 性别: 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...

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

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

    家用记账程序

    本程序开发心得见作者博文《CB程序练手总结——家用记账小程序》,希望能与大家一起讨论学习。 http://blog.csdn.net/luxer_1985/article/details/7243289 最后,国际惯例:版权没有,也可以不保留这份说明文档。若...

    深入理解Android:卷I--详细书签版

     结合实际应用开发需求,以情景分析的方式有针对性地对Android的源代码进行了十分详尽的剖析,深刻揭示Android系统的工作原理  机锋网、51CTO、开源中国社区等专业技术网站一致鼎力推荐 内容简介  《深入理解...

    asp.net知识库

    技术基础 New Folder 多样式星期名字转换 [Design, C#] .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则...

    TI杯二等奖——手把手教你制作电子秤(完整设计资料)-电路方案

    前言: 这是本人参加2016年TI杯福建赛区的作品,获得二等奖。作品以TI的MSP430F5529为主控,利用电阻应变片...整个电路设计源代码; 电路设计的硬件文件; 文档报告及其它设计文件; energia下载地址及修改过的库文件。

    java面试题以及技巧

    │ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...

    java面试题目与技巧1

    │ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...

    java面试题及技巧4

    │ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...

    java面试题及技巧3

    │ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...

    java面试题以及技巧6

    │ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...

Global site tag (gtag.js) - Google Analytics