关闭

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

496人阅读 评论(0) 收藏 举报

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:421344次
    • 积分:4013
    • 等级:
    • 排名:第7790名
    • 原创:67篇
    • 转载:60篇
    • 译文:1篇
    • 评论:33条
    最新评论