析构函数
1、局部对象
2、无参数,系统会有默认的析构函数,但是什么都不做
3、结构:~函数名() 函数名与前面相同也可以
4、new和delete可以触发析构函数,而malloc和free不可以
5、构造函数:创造时自动构造的函数
析构函数:释放时自动调用的函数
class CStu
{
public:
int name;
//int* pp;
CStu()
{
name = 12;
cout << "构造函数" << endl;
//pp = new int(10);
}
CStu(int a)
{
name = 12;
cout << "构造函数" << endl;
}
~CStu()//局部对象:析构函数:无参数,系统会有默认的析构函数,但是什么都不做
{//new会触发构造函数,malloc不行
name = 12;
cout << "析构函数" << endl;
//delete pp;
}//局部对象
};
//int main()
//{
// {
// CStu stu;
// }
//
// CStu* stu = new CStu;//指针对象:不会自动释放
// delete stu;//调用析构函数
//CStu(12);//临时对象: CStu tu(12)作用域旨在所在语句这一行
//int c = int(12);//临时变量 q = 12 c = q
//CStu* stu = (CStu*)malloc(sizeof(CStu));//不触发析构函数
//free(stu);//不触发析构函数
//system("pause");
//return 0;//结束函数作用
//}
this指针:为区分不具有相同名称的作用域
class CStu
{
public:
int a;
CStu(int a)//局部变量名与较大作用域变量名冲突的话,局部变量在其范围内,外面的对内部的不可见
{//如何区别呢,this指针 类型:对应对象类型 this不是成员,是类成员函数的隐含参数,函数内可用 st.this是不可以的
this->a = a;//CStu*
this->Show();
}
void Show()
{
cout << a << endl;
}
};
int main()
{
CStu st(12);
st.Show();
CStu st1(13);
system("pause");
return 0;
}