一、类的构造函数和析构函数
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。
构造函数的作用:为对象分配空间;对数据成员赋初值;请求其他资源。
构造函数的特点:
- 构造函数的名称与类的名称是完全相同的,并且没有返回值。
- 没有用户定义的构造函数时,系统提供缺省版本的构造函数。
- 构造函数可以重载。
类的析构函数是用于取消对象的成员函数 , 当一个对象作用域结束时,系统自动调用析构函数。
析构函数的作用:进行清除对象,释放内存等
析构函数的特点:
- 析构函数的名称与类的名称相同,前面多一个~,并且没有返回值。
- 没有用户定义的析构函数时,系统提供缺省版本的析构函数。
- 析构函数没有参数,也没有返回类型,不可以重载。
构造函数 类的初始化
析构函数 类的销毁(~)
当在栈上创建内存的时候调用构造;
当执行return的时候,栈上的内存要释放,那么它就去调用析构。
变成指针的时候,它的内存去哪了?
本身我没有去释放,它泄漏掉了!泄漏的不只是这里还有p也泄漏了
不调用析构函数,会造成构造函数泄漏。
但本质上说没有释放,但是return 0之后整个程序都结束了,结束后操作系统会把你用过的所有内存全部回收掉。
程序允许中讲泄漏。
主动地通过delete释放内存,同时调用析构函数,在析构函数里面会将我们构造函数动态生成的内存释放掉。
拷贝构造:目的是为了拷贝;
移动构造:目的是为了移动,移动构造调用后原对象会自动被释放
析构函数中的释放内存需要判断p是否为空,如果为空,则不需要释放;如果不为空则释放内存。
移动构造需要添加std::move()