析构函数
构造函数的逆过程(要按照栈的进出顺序对应好);
在C++程序中当对象消失时,完成对象被删除前的一些清理工作;
程序运行结束,构造函数调用次数应该和析构函数调用次数一致,若不一致则会产生内存泄漏;
析构函数默认的就足够了
malloc申请的空间需要释放可以写入析构函数
练习:写一个类class Circle
计算得出两个圆中间的面积
main.cpp
#include <iostream>
#include "mycirle.h"
using namespace std;
int main()
{
Circle c1(10);
Circle c2(20);
cout << c2.area() - c1.area() << endl;
return 0;
}
mycircle.cpp
#include <iostream>
#include "mycirle.h"
using namespace std;
Circle::Circle(double r) : radius(r)
{
cout << "Circle(radius)" << endl;
}
Circle::Circle(const Circle &other) : radius(other.radius)
{
cout << "Circle(const Circle &other)" << endl;
}
Circle::~Circle()
{
cout << "~Circle()" << endl;
}
double Circle::area()
{
return 3.14 * radius * radius;
}
mycircle.h
#ifndef MYCIRLE_H
#define MYCIRLE_H
class Circle
{
public:
Circle(double r = 0);
Circle(const Circle &other);
~Circle();
double area();
private:
double radius;
};
#endif // MYCIRLE_H
运行结果
有名的get / set方法:
void setRadius(double r)
{
radius = r;
}
double getRaidus()
{
return radius;
}
练习:屏幕中抽象出一个点class Point
运行结果