我可以看到代码的三个问题,首先是析构函数:在析构函数中,您应释放在这种情况下创建的任何动态项目,否则将没有好处,还应将变量设置为其默认值。重置a,b和c的值。其次,呼叫问题->评估不起作用。我不会声明Quadratic *名称,而只是声明Quadratic名称。将问题->评估替换为问题。评估。最后,除模板外,分隔头文件和实现文件通常是行业惯例。
我想练习建筑课。我在课堂上了解到内存泄漏永远都不是一件好事,当我调用此类时,是否在创建对象,是否需要在析构函数中添加delete函数以避免泄漏?谢谢!!!
#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;
}
我想练习建筑课。我在课堂上了解到内存泄漏永远都不是一件好事,当我调用此类时,是否正在创建对象,是否需要在我的....] >>
我可以看到代码的三个问题,首先是析构函数:在析构函数中,您应释放在这种情况下创建的任何动态项目,否则将没有好处,还应将变量设置为其默认值。重置a,b和c的值。其次,呼叫问题->评估不起作用。我不会声明Quadratic *名称,而只是声明Quadratic名称。将问题->评估替换为问题。评估。最后,除模板外,分隔头文件和实现文件通常是行业惯例。
谢谢,陈飞飞
C ++不提供垃圾回收,所以是的,您确实需要手动删除内存。
您可以通过键入来执行此操作
delete problem;
使用完毕后。
您需要在类函数中添加析构函数:
~Quadratic();
另外,您需要添加
delete problem;
到您的主要功能,以释放指针占用的内存。
对于那些说删除问题的人.....这就是为什么您不为Quadratic创建指针的原因...去除Quadratic之后的*符号,以后就不需要删除它了。通常我们在对象之后不使用*符号,但通过...会有一些例外。.在C ++中编码已有3年了,我很少看到人们在这种大小的程序中使用对象之后的*。动态内存分配。...您可能不想这样做...
谢谢,陈飞飞
我可以看到代码的三个问题,首先是析构函数:在析构函数中,您应释放在这种情况下创建的任何动态项目,否则将没有好处,还应将变量设置为其默认值。重置a,b和c的值。其次,呼叫问题->评估不起作用。我不会声明Quadratic *名称,而只是声明Quadratic名称。将问题->评估替换为问题。评估。最后,除模板外,分隔头文件和实现文件通常是行业惯例。
C ++不提供垃圾回收,所以是的,您确实需要手动删除内存。
您可以通过键入来执行此操作
您需要在类函数中添加析构函数:
~Quadratic();
对于那些说删除问题的人.....这就是为什么您不为Quadratic创建指针的原因...去除Quadratic之后的*符号,以后就不需要删除它了。通常我们在对象之后不使用*符号,但通过...会有一些例外。.在C ++中编码已有3年了,我很少看到人们在这种大小的程序中使用对象之后的*。动态内存分配。...您可能不想这样做...
谢谢,陈飞飞