类Class(三):构造函数重载(Overloading constructors)
像其它函数一样,构造函数也可以重载,有相同的名字但有不同的参数:不同的参数个数或参数类型。编译器会根据参数自动匹配相应的函数,例如:
|
rect area: 12
rectb area: 25
|
上面的例子中,构造了类 Rectangle 的两个对象 :rect 和 rectb。其中 rect 有两个参数,和之前举得例子一样。
这个例子也引进了一个特殊种类的构造函数:默认构造函数(default constructor)。默认构造函数是没有参数的,它之所以特殊,是因为 只要有一个对象被声明时(且这个对象不需要用任何参数初始化),那么就会立刻调用 默认构造函数。上面的例子中,rectb 被声明时就会调用默认构造函数。
注意:声明 rectb 时如不想传入参数,则后面没有双括号(),如果写上,则不能调用 默认构造函数:
Rectangle rectb;//OK,default constructor called
Rectangle rectb();//oops,default costructor NOT called
这是因为,空括号()会使得 rectb 变为一个函数而不是一个对象。此时,rectb 成为了一个没有参数,返回值类型为 Rectangle 的一个函数。