C++析构函数

析构函数

触发条件:当对象被销毁时,会自动调用析构函数,释放资源。

定义格式:~类名()(没有返回值,不允许加任何参数,故不能重载)

构造函数在对象实例化时自动调用,

析构函数在对象销毁时自动调用。

 

构造函数没有返回值。

拷贝构造函数没有返回值、不能重载。

 

析构函数在栈、堆中都能被调用,但是在堆中不会自动调用,必须手动释放内存,否则会造成内存泄漏


类{命名空间;成员函数;数据成员;}
数据成员{普通数据成员;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()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值