析构函数
触发条件:当对象被销毁时,会自动调用析构函数,释放资源。
定义格式:~类名()(没有返回值,不允许加任何参数,故不能重载)
构造函数在对象实例化时自动调用,
析构函数在对象销毁时自动调用。
构造函数没有返回值。
拷贝构造函数没有返回值、不能重载。
析构函数在栈、堆中都能被调用,但是在堆中不会自动调用,必须手动释放内存,否则会造成内存泄漏
类{命名空间;成员函数;数据成员;} 数据成员{普通数据成员;string;const成员;静态数据成员;对象成员;} 成员函数{属性封装函数;一般功能函数;特殊函数{构造函数{拷贝构造函数;默认构造函数};析构函数}} 成员函数{参数默认值;函数重载;引用;const;} 对象实例化{堆中实例化;战中实例化;}
Teacher.h
#include<string>
#include<iostream>
using namespace std;
class Teacher
{
public:
Teacher(string _name="q",int _age=25,int _m=100);
Teacher(const Teacher &tea);
~Teacher();
void test(Teacher t);
void teach();
void setName(string _name);
string getName();
void setGender(string _gender);
string getGender();
void setAge(int _age);
int getAge();
int getMax();
private:
string m_strName;
string m_strGender;
int m_iAge;
const int m_iMax;
};
Teacher.cpp
#include"Teacher.h"
using namespace std;
/*定义一个Teacher类:
1.自定义析构函数
2.普通方法实例化的对象,在销毁对象时是否自动调用析构函数
3.通过拷贝构造函数实例化对象,在销毁对象时是否自动调用析构函数
数据成员:
名字
性别
年龄
成员函数:
数据成员的封装函数
授课teach
另:
定义可以带最多学生的个数,此为常量
*/
Teacher::Teacher(string _name,int _age,int _m):m_strName("jim"),m_iAge(10),m_iMax(100)
{
cout<<"Teacher(string _name,int _age,int _m)"<<endl;
}
Teacher::Teacher(const Teacher &tea):m_strName("jim"),m_iAge(10),m_iMax(100)
{
cout<<"Teacher(const Teacher &tea)"<<endl;
}
Teacher::~Teacher()
{
cout<<"~Teacher()"<<endl;
}
void test(Teacher)
{
}
void Teacher::teach()
{
cout<<"现在上课"<<endl;
}
void Teacher::setName(string _name)
{
m_strName=_name;
}
string Teacher::getName()
{
return m_strName;
}
void Teacher::setGender(string _gender)
{
m_strGender=_gender;
}
string Teacher::getGender()
{
return m_strGender;
}
void Teacher::setAge(int _age)
{
m_iAge=_age;
}
int Teacher::getAge()
{
return m_iAge;
}
int Teacher::getMax()
{
return m_iMax;
}
int main()
{
Teacher t1;
Teacher t2=t1;
Teacher t3(t1);
test(t1);
Teacher *p=new Teacher();
delete p;
return 0;
}
Teacher(string _name,int _age,int _m)
Teacher(const Teacher &tea)
Teacher(const Teacher &tea)
Teacher(const Teacher &tea)
~Teacher()
Teacher(string _name,int _age,int _m)
~Teacher()
~Teacher()
~Teacher()
~Teacher()