zoukankan      html  css  js  c++  java
  • 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;
    }

    运行结果:

  • 相关阅读:
    spoj 3273 Treap
    hdu1074 Doing Homework
    hdu1024 Max Sum Plus Plus
    hdu1081 To the Max
    hdu1016 Prime Ring Problem
    hdu4727 The Number Off of FFF
    【判断二分图】C. Catch
    【01染色法判断二分匹配+匈牙利算法求最大匹配】HDU The Accomodation of Students
    【数轴涂色+并查集路径压缩+加速】C. String Reconstruction
    【数轴染色+并查集路径压缩+加速】数轴染色
  • 原文地址:https://www.cnblogs.com/bwjblogs/p/12738558.html
Copyright © 2011-2022 走看看