【摘要】:为此,C++提供了一个更好的方法,就是利用类的构造函数来初始化类的数据成员。构造函数具有如下几个特点:构造函数名与类名相同,且没有返回值,不能指定函数类型。构造函数通常被声明为公有属性,但它不能像其他成员函数那样被显式地调用,它是在创建对象时被系统自动调用的。例如,可以将例2.1的MyClass类扩展为MyClass2,使其包含两个构造函数:上述类中包含两个构造函数:一个没有参数,另一个有两个参数。
在刚定义类对象时,其数据成员有时需要有初始值,如给例2.3的Point类的数据成员x和y赋初值。但在类声明体中不能在声明时初始化数据成员,私有数据成员也不能从类以外来访问,所以,在Point类中专门定义了一个setpoint成员函数来实现数据成员x和y的初始化,但这需要在每次定义一个新对象之后就调用该函数完成数据成员的初始化,这种方法既不方便也容易忘记,如果用户不小心忘记了调用setpoint来初始化类对象,那么结果就可能出错。为此,C++提供了一个更好的方法,就是利用类的构造函数来初始化类的数据成员。
构造函数具有如下几个特点:
(1)构造函数名与类名相同,且没有返回值,不能指定函数类型。
(2)构造函数通常被声明为公有属性,但它不能像其他成员函数那样被显式地调用,它是在创建对象时被系统自动调用的。
(3)构造函数是特殊的成员函数,函数体可以写在类体内,也可以写在类体外。
(4)一个类可以有多个构造函数,所有构造函数的名字都相同,但它们的参数个数或参数类型是不相同的。(www.chuimin.cn)
(5)当类对象声明时调用哪一个构造函数取决于传递给它的参数类型。
例如,可以将例2.1的MyClass类扩展为MyClass2,使其包含两个构造函数:
上述类中包含两个构造函数:一个没有参数,另一个有两个参数。下面列出实现这两个构造函数的代码:
其中,构造函数1是默认的构造函数,它将MyClass2类对象的两个数据成员赋初值0,而带参数的构造函数即构造函数2将MyClass2类对象的两个数据成员设置为形参值。
相关推荐