类的构造函数和析构函数

简而言之:
构造函数:
作用:由于类声明对象在程序执行前需要进行初始化,而类中的私有成员只能由同属类的公有成员调用,因此程序并不能完全访问到私有成员,并对其进行初始化。由此,就诞生了构造函数这一概念,构造函数主要负责构造新对象,将值赋给它们的数据成员。更准确地说,c++为这些成员函数提供了名称和使用语法,而程序员需要提供方法定义,
特点:
(1)构造函数名称与类名相同,如,Stock类一个可能地构造函数是名为Stock()地成员函数。构造函数地原型和函数头有一个有趣地特征——虽然没有返回值,但也没有被声明为void类型。实际上,构造函数没有类型声明。
(2)构造函数地参数名不能与成员名相同。一般使用后缀或者前缀m
(3)默认构造函数是在未提供显式初始值时,用来创建对象地构造函数。也就是说,它是用于下面这种声明的构造函数;
Stock fluffy_the_cat;
如果没有提供任何构造函数,则c++将自动提供默认的构造函数,他是默认构造函数的隐式版本,不做任何工作:
Stock::Stock()

析构函数:
作用:用构造函数创建对象后,程序负责跟踪对象,知道其过期为止。对象过期时,程序将自动调用一个特殊的成员函数,即析构函数。析构函数完成清理工作,因此实际上很有用。例如,如果构造函数使用new来分配内存,则析构函数将使用delete来释放这些内存。Stock的构造函数没有使用new,因此析构函数实际上没有需要完成的任务。在这种情况下,只需让编译器生成一个什么都不做的隐式析构函数即可。
特点:
(1)和构造函数一样,析构函数的名称也很特殊:在类名前加上。因此,Stock类的析构函数为Stock();
(2)什么时候调用析构函数呢?这由编译器决定。
1.如果创建的时静态存储类对象,则析构函数将在程序结束时调用。
2.如果创建的是自动存储类对象,则其析构函数将在程序执行完成代码块时自动调用。
3.如果对象是通过new创建的,则它将驻留在栈内存或自由存储区中,当使用delete来释放内存时,其析构函数将自动被调用。

全部评论

相关推荐

09-30 11:52
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务