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++编程思想学习—函数重载与默认函数

1、函数重载        C++中可以用相同的函数名但是参数列表不同来区分函数。编译器连接时会修饰这些名字、类型、范围来产生内部的名字供连接器使用。但是由于返回值对于函数的调用不是必须的,有些函数...

C++编程思想学习—C++中的C特征

1、数据类型 C++标准只规定每种数据类型的最大值、最小值。至于用二进制编码表示,还是以BCD码表示并未规定,所以,对于不同的编译器,不同的造作系统(如:32位的以及64位的操作系统),每种数据类型...

《C++编程思想》第四章 初始化与清除(原书代码+习题+解答)

相关代码: 1.#include class tree { int height; public: tree(int initialHeight); ~tree(); void grow(...

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

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

C++编程思想学习笔记----第11章 引用和拷贝构造函数

11.1 C++中的指针 c和c++指针的最重要区别在于c++是一种类型要求更强的语言。在c中,void* 类型的指针可以随意地指向其他类型的指针,而c++中必须显示地使用类型转换通知编译器和读者,这...

C++编程思想学习笔记---第14章 继承和组合

继承是面向对象程序设计的基石 14.1 组合语法下面一段代码把类型X的一个对象作为公共对象嵌入到一个新类内部,实现了组合的语法。//: C14: useful.h //A class to reuse...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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