C++析构函数

析构函数

每个类都有一个析构函数,当对象销毁时自动调用。

析构函数与构造函数相对。创建一个对象时,构造函数被调用,而销毁一个对象时,析构函数被调用。

当程序员没有显式地写一个析构函数时, 编译器会为每个类定义一个缺省的析构函数。

析构函数的名字与构造函数一样,只是在前面加了一个~

看下面的例子:

Circle.h

class Circle {
public:
    //无参构造函数
    Circle();
    //有参构造函数
    Circle(double);
    //析构函数
    ~Circle();
    //获取圆的面积
    double getArea();

private:
    //圆的半径
    double radius;
    //定义常量圆周率
    const double PI = 3.14159;
    //对象个数
    static int objectNumber;
};

Circle.cpp

#include "Circle.h"
#include <iostream>

using namespace std;

int Circle::objectNumber = 0;

//无参构造函数
Circle::Circle() {
    this->radius = 1;
    objectNumber++;
    cout << "当前对象的个数是" << objectNumber << endl;
}

//有参构造函数
Circle::Circle(double radius) {
    this->radius = radius;
    objectNumber++;
    cout << "当前对象的个数是" << objectNumber << endl;
}

//析构函数
Circle::~Circle(){
    objectNumber--;
    cout << "当前对象的个数是" << objectNumber << endl;
}

//获取面积
double Circle::getArea() {
    return radius*radius*PI;
}

main.cpp

#include <iostream>
#include "Circle.h"

using namespace std;

int main()
{
    //调用无参构造函数
    cout << "创建对象p1" << endl;
    Circle* p1 = new Circle;

    //调用有参构造函数,参数为1
    cout << "创建对象p2" << endl;
    Circle* p2 = new Circle(1);

    //调用有参构造函数,参数为3
    cout << "创建对象p3" << endl;
    Circle* p3 = new Circle(3);

    //销毁p1
    cout << "销毁对象p1" << endl;
    delete p1;

    //销毁p2
    cout << "销毁对象p2" << endl;
    delete p2;

    //销毁p3
    cout << "销毁对象p3" << endl;
    delete p3;

    return 0;
}

运行结果:

C++析构函数

 

原文链接: https://www.cnblogs.com/bwjblogs/p/12738558.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++析构函数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/343252

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午2:01
下一篇 2023年3月2日 上午2:01

相关推荐