构造器与析构器
#include "stdafx.h"
#include <iostream>
using namespace std;
#if 0
----构造器
class 类名
{
类名(形式参数)
构造体
}
class A
{
A(形参)
{
}
}
特性:在类对象创建时,自动调用,完成类对象的初始化。
尤其是动态堆内存的申请
1.构造器 用于完成对象创建的初始化
2.在对象创建时 自动调用
3.系统提供了默认的无参空构造器
4.一经定义 系统不再提供默认
5.构造器支持重载,默认参数
----析构器
class 类名
{
~类名()
析造体
}
class A
{
~A()
{
}
}
1.析构器 完成对象销毁前的清理工作(处理构造器中申请的堆空间)
2.与类名同 无返回 无参数 并且在对象消失的时候 自动被调用
3.栈对象:离开其作用域时调用析构器
堆对象:如果不delete就不会调用析构器 就会造成内存泄漏
所以申请堆对象后要进行delete 去调用析构器
4.不能重载 不能默认参数
#endif
class Array
{
public:
//Array()
//{
// //给无参的构造器一些值 避免之后用到时出错
// buf = new char[512];
// memset(buf, 0, 512);
//}
//使用默认参数 将默认的构造器包含 也可以根据自己意愿进行初始化
//Array(int size=512)
//{
// buf = new char[size];
// memset(buf, 0, size);
//}
Array(int size = 1) //构造器参数列表
:buf(new char[size])
{
memset(buf, 0, size);
}
~Array()
{
delete []buf;
}
private:
char* buf; //实现动态设置数组大小
};
int _tmain(int argc, _TCHAR* argv[])
{
Array s;//使用默认参数
//不能这样写 Array s(); 系统会编译为函数声明
Array ss(10); //使用构造器传参进行初始化
return 0;
}