C
coder_lol
Thanks everybody for helping me with the Syntax confusion! The
implicit conversion stuff really got me
I have one more
question...
Array<int32> ia;
Does the above use the default constructor and get me an Array<int32>
with a size 0? The memory used is the stack, right?
ia = Array<int32>(10);
Will my array be on the stack or the heap? Based on my observation
with MSVS 2003, it looks to be on the Heap, but I'd like to be sure
that is indeed the standard!!
Thanks,
===
template<class T>
class Array : public Object
{
public:
explicit Array(int32 aSize = 0) : dataLen(aSize)
{
data = new T[dataLen];
}
explicit Array(const T *aVal, int aSize) : dataLen(aSize)
{
data = new T[dataLen];
for(int32 t = 0; t < dataLen; t++)
data[t] = aVal[t];
}
explicit Array(int32 aSize, const T& aVal) : dataLen(aSize)
{
data = new T[dataLen];
for(int32 t = 0; t < dataLen; t++)
data[t] = aVal;
}
virtual ~Array()
{
delete[] data;
}
int32 length() const
{
return(dataLen);
}
const T& operator[](int32 i) const
{
return(data);
}
T& operator[](int32 i)
{
return(data);
}
T *getData() const
{
return(data);
}
Array& operator=(const Array<T>& aOrig)
{
if(this == &aOrig)
return(*this);
T *newData = new T[aOrig.length()];
for(int32 t = 0; t < aOrig.length(); t++)
newData[t] = aOrig[t];
delete[] data;
dataLen = aOrig.length();
data = newData;
return(*this);
}
private:
Array(const Array<T> &aOrig) { aOrig;};
private:
T *data;
int32 dataLen;
};
implicit conversion stuff really got me
question...
Array<int32> ia;
Does the above use the default constructor and get me an Array<int32>
with a size 0? The memory used is the stack, right?
ia = Array<int32>(10);
Will my array be on the stack or the heap? Based on my observation
with MSVS 2003, it looks to be on the Heap, but I'd like to be sure
that is indeed the standard!!
Thanks,
===
template<class T>
class Array : public Object
{
public:
explicit Array(int32 aSize = 0) : dataLen(aSize)
{
data = new T[dataLen];
}
explicit Array(const T *aVal, int aSize) : dataLen(aSize)
{
data = new T[dataLen];
for(int32 t = 0; t < dataLen; t++)
data[t] = aVal[t];
}
explicit Array(int32 aSize, const T& aVal) : dataLen(aSize)
{
data = new T[dataLen];
for(int32 t = 0; t < dataLen; t++)
data[t] = aVal;
}
virtual ~Array()
{
delete[] data;
}
int32 length() const
{
return(dataLen);
}
const T& operator[](int32 i) const
{
return(data);
}
T& operator[](int32 i)
{
return(data);
}
T *getData() const
{
return(data);
}
Array& operator=(const Array<T>& aOrig)
{
if(this == &aOrig)
return(*this);
T *newData = new T[aOrig.length()];
for(int32 t = 0; t < aOrig.length(); t++)
newData[t] = aOrig[t];
delete[] data;
dataLen = aOrig.length();
data = newData;
return(*this);
}
private:
Array(const Array<T> &aOrig) { aOrig;};
private:
T *data;
int32 dataLen;
};