首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编辑/修复这个类?

如何编辑/修复这个类?
EN

Stack Overflow用户
提问于 2020-06-15 09:17:08
回答 4查看 41关注 0票数 0

我想练习构建类。我在我的课上学到,内存泄漏从来都不是好事,当我调用这个类时,我是否正在创建一个对象,我是否需要在我的析构函数中添加一个delete函数来避免泄漏?谢谢!

代码语言:javascript
复制
#include <iostream>
#include <string>
using namespace std;


class Quadratic
{
public:
    Quadratic(int ia, int ib, int ic);
    int evaluate(int x);

private:
    int a, b, c;
};

Quadratic::Quadratic(int ia, int ib, int ic)
{
    a = ia;
    b = ib;
    c = ic;
}

int Quadratic::evaluate(int x) 
{
    int answer = a * (x * x) + b * x + c;
    return answer;
}

Quadratic::~Quadratic()     // ctrl + k + c to comment out large section of code. 
{
    cout << "Goodbye" << endl;
}

void main()
{
    int list[3] = { 2,3,4 };
    int* p1 = &list[0];
    int* p2 = &list[1]; 
    int* p3 = &list[2];

    // calling a class looks like this
    Quadratic* problem = new Quadratic(2, 3, 4);
    int answer = problem->evaluate(0);
    cout << answer << endl;

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-06-15 09:29:21

我可以看到你的代码有三个问题,首先是析构函数:在析构函数中,你应该释放在这种情况下创建的任何动态项,没有一个是好的,而且你应该将变量设置为它们的默认值。重置a、b和c的值。其次,调用问题->评估应该不起作用。我不会声明二次名称,只需声明二次名称。用problem.evalute替换problem->evalute。最后,除了模板之外,分离头文件和实现文件通常是行业惯例。

票数 0
EN

Stack Overflow用户

发布于 2020-06-15 09:31:04

C++不提供垃圾收集,所以您确实需要手动删除内存。

您可以通过键入以下命令来执行此操作

delete problem;

在您使用完它之后。

票数 0
EN

Stack Overflow用户

发布于 2020-06-15 09:32:42

您需要将析构函数添加到您的类函数中:

代码语言:javascript
复制
~Quadratic();  

此外,您还需要添加

代码语言:javascript
复制
delete problem;

到你的主函数,重新释放你的指针占用的内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62379989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档