Я - такой нубик из C ++, и я пытаюсь лучше понять код, который я описываю, поэтому я создал этот класс, чтобы изучить основы перегрузочных операторов, а также функций push back и pop back, т.е. создать свой собственный массив переменных.Это не классное задание, я просто пытаюсь научить себя этому коду.
На самом деле это был тестовый вопрос по программированию, который я задал, и я пытаюсь извлечь из него урок на тот случай, если мне бросят что-то подобноеснова.Я начал в 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