时间:2021-05-20
C++中的构造函数与析造函数详解
构造函数的概念
(1)构造函数是特殊的成员函数
(2)当创建类类型的新对象时,系统自动会调用构造函数
(3) 构造函数是为了保证对象的每个数据成员都被正确的初始化。
创建构造函数的注意事项:
(1) 函数名与类名相同;
(2) 没有返回类型,返回类型也不能是void型
(3) 构造函数通常情况下声明为public,否则不能像其它成员函数那样被显示的调用
(4) 构造函数也可以声明为private,但是是用作特殊用途-----如单例类singleton时就是将构造函数声明为private.
(5) 构造函数可以有任何类型与任意个数的参数,一个类可以定义多个构造函数(重载)
关于默认构造函数:
默认构造函数是构造函数的其中一种。除此之外,还有拷贝构造函数与转换构造函数,这个后期再说明。默认构造函数是不带任何参数的构造函数,如果程序中未声明定义任何一个构造函数,则系统将自动产生一个默认的构造函数,此时不会对对象数据成员进行初始化,那么对象数据成员的值将是随机的。而如果我们提供了一个构造函数(只要是构造函数,无论是带参数的,还是不带参数的,是拷贝还是转换构造函数),哪怕只提供了仅仅一个构造函数,系统就不会再为我们提供默认构造函数了。
下面是关于构造函数的类定义:
下面代码是Test类的使用:
请注意:全局对象的构造函数是先于main函数执行的
析构函数概念
(1) 函数名与类名类似,前面多了一个"~"符号(取反符)
(2) 没有返回类型
(3) 不能有参数
(4) 不能被重载(这个好理解,因为没有参数,自然不能重载)
(5) 如果没有定义析构函数,则编译器会自动生成一个默认的析构函数,函数体是空的。
析构函数与对象数组
把握一个原则,构造几个对象,就要调用几次析构函数。
拿上面的Test类来进行举例说明:
注意:析构函数可以被显式调用,但是当对象的生命周期结束后,系统还会再调用一次析构函数,这样就造成了调用2次析构函数,如果在析构函数中含有delete操作,就会出现问题。所以析构函数的显式调用比较少。STL源码中有用到析构函数的显式调用,这属于一些特殊用法。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解C++编写String的构造函数、拷贝构造函数、析构函数和赋值函数编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:classS
首先想到的是在C++中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,只要把它的构造函数和析构函
C++中构造函数的实例详解c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++
c++中,如果没有为一个类提供析构函数,那么编译器会为这个类提供默认的析构的函数。由于析构函数的功能和构造函数相反,因此和默认的构造函数类似,编译器也会提供无用
C++析构函数与变量的生存周期实例详解这篇介绍了析构函数,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你