C++编程思想学习—初始化与清除

原创 2012年03月29日 11:20:22

1、构造与析构函数

c++中为了确保对象能够在使用之前初始化,再离开对象的作用域(同变量的作用域范围是一样的)时确保清楚它,C++的对象中添加了构造和析构函数用于实现上面的功能。构造和析构函数,由编译器负责将构造函数的调用代码插入到对象创建语句紧挨着的后面,而在程序离开对象的作用域时编译器负责将析构函数的调用代码插入到作用域范围的最后一条语句之后。这样在程序真正的执行时,就保证了,每个对象在创建的时候已初始化,在对象离开作用域之后进行了清楚工作。

由于编译器不能处理返回值,所以,析构函数和构造函数不可以有返回值。但是,构造函数可以带参数,而析构函数没有必要带参数。析构函数调用的唯一凭证就是作用域的右括号,只要程序执行指针离开这一作用域马上调用析构函数。

2、变量的定义与用

       C++允许在任何滴放定义变量。这样程序员可以在使用时才定义需要的变量,同时将变量初始化。这样可以防止变量未初始化就使用,同时,大大增加了程序的可阅读性。

3、集合的初始化

       C++中可以在集合(可以是数组、类、结构体)定义的时候,用在{}中指定初始值的方式,来初始化集合。但是结构体以及类中,构造函数是同过的正式接口来强制初始化的,所以,构造函数必须通过被调用来进行初始化。如下:(类中也是一样的)

Struct X{

Int i;

Int j;

  X(int a);

                                                                                                           }

定义以及初始化为:Y y1[]={y(1),y(2),y(3)};只要有了构造函数无论是结构体还是类。所有的成员无论是公共的还是一个带私有成员的class,所有的初始化工作都必须通过构造函数来进行。如上面的结构体,上面结构体的初始化,只是对构造函数进行了调用,而所有的初始化工作都有构造函数进行。而初始化时能指定的值只能是构造函数参数列表所匹配的参数。如上面如果构造函数只对int i进行了初始化,而未对int j 初始化则通过上面方式的定义结构体变量int j 是未初始化的,这是危险的。默认构造函数用于当想创建一个对象而又不知道任何细节时。当且仅当一个结构中没有构造函数时,编译器会自动地为它创建一个默认的构造函数(以后结构不专指结构体,而是结构体或者是类)。但是,由编译器自动创建的构造函数,只是做一些将内从初始化的操作。所以,编写程序时最好把它当做一种安全网。如果可以,尽量编写自己的构造函数。 

      此文只为个人学习C++编程思想时个人心得体会,所以,难免有不严谨之处,甚至有可能是错误的理解。如发现错误,或者疑问。欢迎提出讨论,共同学习、进步

C++编程思想--初始化与清除

初始化与清除 安全性包括初始化与清除。其实就是构造函数与析构函数的作用。对于一个库的struct来说必要的清除工作容易遗忘。初始化和清除的概念是简化库的关键。减少客户程序员去为完成这些操作引起的细微...
  • tang_jin2015
  • tang_jin2015
  • 2013年03月14日 20:41
  • 488

学习编程重要的是掌握编程思想

求最大值、求和、变量交还这三类是最近遇到的对于掌握核心思想非常重要的编程题目,三种类型的题目分别代表了三种思想,这三种思想都是非常重要的思想,一定要掌握这三种类型编程题的思想核心而不是仅仅记住这三种类...
  • funnyshadan
  • funnyshadan
  • 2015年08月02日 16:14
  • 731

JAVA编程思想(第4版) 静态数据的初始化

静态数据永远在只占一份存储空间,静态初始化只在必要时刻进行,而且静态对象不会被再次初始化。初始化的顺序是先静态对象(前提是它们尚未因前面的对象创建而初始化)而后是非静态对象。...
  • u014621130
  • u014621130
  • 2015年04月07日 19:58
  • 819

6.JAVA编程思想初始化和清除

欢迎转载,转载请标明出处: 随着计算机的进步,‘不安全’的程序设计已成为造成编程代价高昂的罪魁祸首之一。 许多 C程序的错误都是由于程序员忘记初始化一个变量造成的。对于现成的库,若用户不知道如何初始...
  • notbaron
  • notbaron
  • 2016年04月02日 00:22
  • 30890

《C++ 编程思想》的学习

初学《C++编程思想》,感觉很不对胃口,可能是习惯了《C++ primer》,同样是讲解相同的某个知识点,但我感觉《C++编程思想》没有primer写得好,没有primer系统、有条理、清晰好懂。但百...
  • wd1603926823
  • wd1603926823
  • 2015年09月25日 20:47
  • 2629

Java编程思想》作者:C++不垃圾,只是Java很傲慢

《Thinking in C++》及《Thinking in Java》的作者Bruce Eckel向来是个“拥C++反Java”派,他曾经不止一次的提到,C++语言特性的添加有多么的深思熟虑,而Ja...
  • langhunoo
  • langhunoo
  • 2013年06月13日 21:44
  • 753

java编程思想学习(1)

Smalltalk           这是第一种成功的面向对象程序设计语言,也是Java 的基础语言。Smalltalk (java的基础语言)的五大基本特征:        (1) 所有东西都...
  • wojiaohuangyu
  • wojiaohuangyu
  • 2016年08月16日 10:28
  • 857

Java编程思想第四版读书笔记——第十三章 字符串

Java编程思想第四版读书笔记——第十三章 字符串 1、不可变String 2、重载“+”与StringBuilder 3、无意识的递归 4、String上的操作 5、格式化的输出...
  • severusyue
  • severusyue
  • 2016年06月30日 20:01
  • 878

java编程思想读书笔记-第四章初始化和清除

Person p = new Person();通过new关键字调用person类返回一个实例,将该实例给变量p。   垃圾收集器只知释放那些由 new 分配的内存,使用finalize()清理 类...
  • u014635472
  • u014635472
  • 2017年03月20日 20:33
  • 110

如何用思维导图学Java编程思想

摘要:如何学习Java编程思想,基本分为21个部分,看完本文你就有答案。没想到会有很多人留言要这个思维导图,一一回复有点累,放在 Github 上,方便大家下载。文章中的截图,并没有详尽说明这个思维导...
  • bjweimengshu
  • bjweimengshu
  • 2017年12月23日 00:00
  • 539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++编程思想学习—初始化与清除
举报原因:
原因补充:

(最多只允许输入30个字)