gpt4 book ai didi

c++ - 为什么我的回推功能不起作用,只是出现段错误

转载 作者:行者123 更新时间:2023-11-28 08:09:36 25 4
gpt4 key购买 nike

我是一个 C++ 菜鸟,我试图更好地理解我所涵盖的代码,所以我构建了这个类来学习重载运算符以及推回和弹出函数的基础知识,即制作我自己的变量数组。这不是类作业,我只是想自学代码。

这实际上是我做的一个计算机科学编程测试题,我试图从中学习,以防他们再次向我抛出类似的问题。我开始使用 Java,现在使用 C++。

    #include"IntArray.h"
#include<iostream>
using namespace std;

IntArray::IntArray()
{
size=0;
capacity=1;
data = new int[capacity];
cout<<"constructor fired off"<<endl;
}

IntArray::~IntArray()
{
delete [] data;
cout<<"Destructor fired off"<<endl;
}
IntArray::IntArray (const IntArray & m)
{
size=m.size;
capacity=m.capacity;
data= new int[capacity];
cout<<"copy constructor fired off"<<endl;

}
IntArray IntArray::operator= (const IntArray & other)
{
cout<<"operator= fired off"<<endl;
if(this != &other)//comparing the addresses
{
delete [] data;
size= other.size;
capacity = other.capacity;
data = new int[capacity];
for (int index=0; index<size; index++)
{
data[index]=other.data[index];
}
}
return *this;
}

int& IntArray::operator[] (int n)
{
if(n<0||n>=size)
{


cout<<"Array not big enough"<<endl;
return n;
}

IntArray a;
return a[n];
}
IntArray& IntArray::push_back(int n)
{
data[size]=n;
size++;
if(size==capacity)
capacity=capacity*2;
return *this;
}
IntArray& IntArray::pop_back()
{
if(size>0)
size--;
}
double IntArray::average()
{
double sum=0;
int count=0;
for(int index=0; index<size; index++)
{
sum+=data[index];
count++;
}
return sum/count;
}
int IntArray::getSize()
{
return size;
}
int IntArray::getCapacity()
{
return capacity;
}

我的h文件

#ifndef INTARRAY_H_INCLUDED
#define INTARRAY_H_INCLUDED

class IntArray
{
private:
int size;
int capacity;
int *data;

public:
IntArray();
~IntArray();
IntArray (const IntArray &);
IntArray operator= (const IntArray &);

int& operator[] (int);
IntArray& push_back(int);
IntArray& pop_back();
double average();
int getSize();
int getCapacity();
};

#endif // INTARRAY_H_INCLUDED

最佳答案

这不会有太大帮助,但有太多次优的东西让我无法进入。

如果这是一项编程练习,那么您确实需要想出更好的设计。我会避免使用 new 和 delete 的原始指针,研究智能指针。

如果您真的打算使用它,我不会让标准提供满足您需求的类型。

#include <vector>
:::
std::vector<int> i5(5); //five ints
i5.push_back(6); //now six
i5.pop_back(); //five again
i5.clear(); //non

关于c++ - 为什么我的回推功能不起作用,只是出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9458508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com