c++ - 一个变量或对象的内存在程序结束时自动终止,而不是为什么我们使用析构函数?

标签 c++ oop constructor destructor

在下面的程序中,我们在局部范围内创建 Circle 对象,因为我们没有使用 new 关键字。我们知道一个变量或对象的内存在程序结束时会自动终止 finish 而不是我们为什么要使用 destruct?

#include<iostream>
using namespace std;     
class Circle //specify a class
{
    private :
        double radius; //class data members
    public:
        Circle() //default constructor
        {
            radius = 0;
        }           
        void setRadius(double r) //function to set data
        {
            radius = r;
        }
        double getArea()
        {
            return 3.14 * radius * radius;
        }
        ~Circle() //destructor
        {} 
};

int main()
{
    Circle c; //defalut constructor invoked   
    cout << c.getArea()<<endl;     
    return 0;
}

最佳答案

将内存假设为无限资源是非常危险的。考虑一个需要 24x7 全天候运行并以高速率(比如说每秒 1,000 条消息)收听数据馈送的实时应用程序。每条消息大约 1KB,每次它为每条消息分配一个新的内存块(显然在堆中)。总之,我们每天需要大约 82 GB。如果你不管理你的内存,现在你可以看到会发生什么。我不是在谈论复杂的内存池技术或类似技术。通过简单的算术计算,我们可以看出我们不能将所有消息都存储在内存中。这是您考虑内存管理的另一个例子(从分配和释放的角度)。

关于c++ - 一个变量或对象的内存在程序结束时自动终止,而不是为什么我们使用析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24349211/

相关文章:

oop - fortran 中的过程 nopass 与普通函数

c++11 - 如何在构造 std::vector 时放置元素?

c++ - 继承、纯虚函数和非内联成员函数定义

c++ - 无类型的连续内存容器

c++ - 如何在 QCompleter 的项目之间画一条线作为分隔符?

c++ - 我有一个类对象作为另一个类的成员,如何初始化为安全的空状态?

c++ - 太多的模仿猫我搞不懂

c++在子类和切片中重新定义类型

c++ - 如何在C++中继承类?

oop - 在这种情况下是否首选方法而不是函数