您的位置:首页 > 其它

类的构造函数、析构函数与赋值函数(一)

2014-08-09 08:01 197 查看
每一个类只有一个析构函数和一个赋值函数,但是可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。对于任意一个类A,如果未编写上述函数,C++编译器会自动为类A生成四个缺省的函数,如:

既然编译器能为类自动生成缺省函数,是不是就不用程序员编写了呢?答案显然是否定的。

原因如下:

(1)如果使用“缺省的无参数的构造函数”和“缺省的析构函数”,就失去了初始化和清除的机会,类的使用就会变得缺少灵活性。

(2)最重要的一点:“缺省的无参数构造函数”和“缺省的析构函数"均采用”位拷贝“而非”值拷贝“的方式来实现,倘若类中含有指针变量,这两个函数注定将出错

虽然C++的编译器具有严格的类型安全检查功能,几乎能找出程序中所有的语法问题,但是语法错误只是最基本的错误。级别高的错误往往在语法上是正确的,但是实际运行时会产生各种问题。典型的就是由于”变量没有被正确的初始化或者清除造成的“。

这个问题,C++可以通过构造函数和析构函数来及解决:把对象的初始化工作放在构造函数中,把清除工作放在析构函数中。当对象被创建的时候,构造函数自动执行。当对象消亡时,析构函数被自动执行。

构造函数和析构函数的名字不能随便取,规则是:构造函数、析构函数的函数名与类名相同,且构造函数、析构韩式无返回值。另外,因为构造函数与析构函数的功能正好相反,为了区分构造函数与析构函数,在构造函数前加上”~‘号表示析构函数。

注意:无返回值 与 返回值类型为void 不同,不是一个概念。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: