第6章 初始化和清除

1.用构造函数确保初始化

  客户程序员在使用对象之前,必须调用初始化对象的结构,但是,他们往往会忘记这些,而这些可以交给库程序员来自动处理。这个就是构造函数。这个函数的名字和类的名称一样,编译器就可以识别。

2.用析构函数确保清除

  构造函数和析构函数是没有返回值,而且这个void返回值不同于一般的void函数,他不能做任何其他的事情。当对象创建是自动调用构造函数,当对象超出它的作用域时,自动调用析构函数。非局域性的goto语句不会调用析构函数,但是编译器有时候不会支持。

3.清除定义块

  在C中,总是要再程序块的一开始就定义好所有的变量,C++要保证一个对象产生时,同时被初始化,但是一开始我们很难知道所有的初始化信息,C的这种一开始定义但是有没有初始化的方法是个不好的惯例。通常,在C++中对一个对象适用的规则,对内部对象也同样适用,这也就是意味着C++中一般是等到对一个对象的所有信息了解是再去定义它,定义和初始化在一起。在标准的C99中,也可以在某一块的任意地方定义变量。事实对于内部的变量,为了向前的兼容性,大部分的编译器允许在开始的定义处不初始化变量。

时间: 2024-08-26 14:55:34

第6章 初始化和清除的相关文章

java基础 第4章 初始化和清除

第4章 初始化和清除 "随着计算机的进步,'不安全'的程序设计已成为造成编程代价高昂的罪魁祸首之一." "初始化"和"清除"是这些安全问题的其中两个.许多C程序的错误都是由于程序员忘记初始化一个变量造成的.对于现成的库,若用户不知道如何初始化库的一个组件,就往往会出现这一类的错误.清除是另一个特殊的问题,因为用完一个元素后,由于不再关心,所以很容易把它忘记.这样一来,那个元素占用的资源会一直保留下去,极易产生资源(主要是内存)用尽的后果. C++

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

相关代码: 1. #include <stdio.h> class tree { int height; public: tree(int initialHeight); ~tree(); void grow(int years); void printsize(); }; tree::tree(int initialHeight) { height = initialHeight; } tree::~tree() { puts("inside tree destructor&quo

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

相关代码: 1. #include <stdio.h> class tree { int height; public: tree(int initialHeight); ~tree(); void grow(int years); void printsize(); }; tree::tree(int initialHeight) { height = initialHeight; } tree::~tree() { puts("inside tree destructor&quo

第4章 初始化和清除

4.1 用构建器自动初始化对于方法的创建,可将其想象成为自己写的每个类都调用一次initialize().这个名字提醒我们在使用对象之前,应首先进行这样的调用.但不幸的是,这也意味着用户必须记住调用方法.在Java中,由于提供了名为“构建器”的一种特殊方法,所以类的设计者可担保每个对象都会得到正确的初始化.若某个类有一个构建器,那么在创建对象时,Java会自动调用那个构建器——甚至在用户毫不知觉的情况下.所以说这是可以担保的!接着的一个问题是如何命名这个方法.存在两方面的问题.第一个是我们使用的

第4章 初始化和清除(下)

4.4 成员初始化 局部变量在使用之前必须初始化. package com.sunny.hello.c4; public class Test { void f() { int i; //i++; 编译错误,因为i未初始化 } } 但是,若将基本类型设为一个类的数据成员,情况则会变得稍微有些不同.由于任何方法都可以初始化或使用那个数据,所以在正式使用前,若还是强迫程序员将其初始化为一个适当的值,就可能不是一种实际的做法.然而,若为其赋予一个垃圾值,同样 是非常不安全的.因此,一个类的所有基本类型

读TIJ -4 初始化和清除

<Think in java·第 4 章初始化和清除> 本章介绍对象的创建和消除. 4.1 用构建器自动初始化 [You can imagine creating a method called initialize( ) for every class you write.]一句话的正确解读是,你(男生)将自己想象成为女生.所以,我专门用一节 < 编程导论(Java)·2.3.6 构造器不是方法>强调这一点. 4.2 方法过载 这一段解释非常经典,按照人们的日常生活介绍重载.同时

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

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040234 随着计算机的进步,'不安全'的程序设计已成为造成编程代价高昂的罪魁祸首之一. 许多 C程序的错误都是由于程序员忘记初始化一个变量造成的.对于现成的库,若用户不知道如何初始化库的一个组件,就往往会出现这一类的错误.清除是另一个特殊的问题,因为用完一个元素后,由于不再关心,所以很容易把它忘记.这样一来,那个元素占用的资 源会一直保留下去,极易产生资源(主要是内存)用

《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记

REF设备 参考光栅设备,他能以软件计算方式完全支持Direct3D Api.借助Ref设备,可以在代码中使用那些不为当前硬件所支持的特性,并对这此特性进行测试. D3DDEVTYPE 在程序代码中,HAL设备用值D3DDEVTYPE_HAL来表示.该值是一个枚举变量.REF设备用D3DDEVTYPE_REF来表示.这种类型非常重要,你需要铭记,因为在创建设备的时候,我们必须指定使用哪种设备类型. COM(组件对象模型) 创建COM接口时不可以使用c++关键字new.此外使用完接口,应调用Rel

Prism 文档 第二章 初始化Prism应用程序

                                                                       第二章 初始化Prism应用程序 本章将讨论为了使一个Prism应用程序的启动和运行哪些是必须的.Prism的应用程序在启动过程中需要注册和配置,这被称为引导应用程序. 什么是Bootstrapper? bootstrapper是一个类,通过Prism类库负责一个应用程序建立的初始化.通过使用bootstrapper,对于如何将Prism库组件连接到您的应