温故知新----再谈构造函数(转:不转了)
温故知新----再谈构造函数
作者:HolyFire
如果不知道构造函数的请先看一下《由始至终----构造与析构》,看过的我就不再多言,直接转入话题。
定义一个类的的实例的时候,可以看到这样的形式
classA a; //构造函数不需要参数
不需要参数的构造函数称之为缺省构造函数。
不需要参数有两种情况
1:构造函数没有参数
2:构造函数有参数但可以不给出
class A{
public:
A(); //构造函数没有参数
A( int I = 10 ); //构造函数的参数有缺省值,可以不用给出
};
这两种情况都是缺省构造函数,但是由于缺省构造函数的特殊性(他是被自动调用的),编译器无法判断需要调用那一个,所以规定缺省构造函数只能有一个。
缺省构造函数的出现,意味着一个类型可以不依赖约束条件而被创建,就象一些细小的单元,质子,中子和电子,他们的有很大的类似性,不需要用条件来分辨他们被创建的信息。当然不需要用条件来分辨他们被创建的信息也包含了第二种情况,从流水线上生产的统一品种的产品很多都是用同一种方式的,那么创建他们的信息基本一致,也就是所符合第二种情况,参数可以采用缺省值。
这个例子我们可以举一个例子,我们创建一个指针类的时候,常常把他指向的内容置为空值,这很容易理解,我们需要一个指针,但是现在还不知道指向谁,等到我们要使用它的时候,不一定是知道他是否指向过别的对象,为了简化问题,一开始就将他置空,但是有时候我们需要用参数在创建的时候就给出指向的对象,特别是在产生临时对象的时候尤为管用,那么,我们使用一个参数缺省值为空的缺省构造函数。
classA a( a1 ); //构造函数有参数,而参数为一个相同的类型
这样的构造函数叫做拷贝构造函数,意思就是将类一个实例的内容复制到新创建的实例中去,为什么要这么做呢。我们来研究一下。
我们平时使用基本类型的时候,可以使用赋值语句,将相同类型的某个对象的内容赋给另一个对象
int a = 3;
int b;
b = a; //这样的话,b中就有和a一样的内容了
补充:Jsp教程,面向对象编程