注册 登录
编程论坛 C++教室

在搞一题..给大家看看

sunkaidong 发布于 2008-03-18 20:31, 1042 次点击
main.cpp
Array <int>  arr1(12);
Array <int>  arr2(arr1);

head.cpp
template <class TYPE>
Array <TYPE> ::Array(int size)
{
_size = size;
pArray = new TYPE[_size];
if (pArray != NULL)
{
memset(pArray, 0, _size * sizeof(TYPE));
}
}

template <class TYPE>
Array <TYPE> ::Array(const Array& Arf)
{
Array(Arf.size());//在这我想调用构造函数。意思是先把arr2初始为空,并且通过构造函数分配空间。
//这样写肯定不行,因为是建立一个临时对象,我该怎么写呢。this-> Array和(*this).array都不行的。请教
memcpy(pArray, Arf.getparray(), Arf.size() * sizeof(TYPE));
}
3 回复
#2
张信哲2008-04-11 20:31
你真的很强
#3
sunkaidong2008-04-11 20:40
第一次是调用tostring()方法是调用的..第二次是返回值打印..第三次是后一个打印函数的内容
#4
lucky_boy2008-04-11 22:23
"先把arr2初始为空,并且通过构造函数分配空间"
是啥意思啊?复制构造函数把arr2初始为空干啥?
你具体啥意思我没搞清楚,不过这个复制构造函数我还是会的
template <class TYPE>
Array <TYPE> ::Array(const Array& Arf) :_size(Arf.size)
{
    pArray = new TYPE[_size];
    if (pArray != NULL)
    {
        memset(pArray, 0, _size * sizeof(TYPE));
    }
    //这里用for循环将Arf.pArray赋给pArray
    memcpy(pArray, Arf.getparray(), Arf.size() * sizeof(TYPE)); //这函数,不懂
}
那么,下面这个也应该对:
template <class TYPE>
Array <TYPE> ::Array(const Array& Arf)
{
    Array(Arf.size);
    //这里用for循环将Arf.pArray赋给pArray
    memcpy(pArray, Arf.getparray(), Arf.size() * sizeof(TYPE)); //这函数,不懂
}

[[it] 本帖最后由 lucky_boy 于 2008-4-11 22:25 编辑 [/it]]
1