#include
using
namespace
std;
template
class myarray
~myarray()
}myarray(const myarray& arr)//拷貝建構函式,使用const,防止傳入引數改變
}t& operator(int index)
myarrayoperator=(const myarray& arr)
this->msize = arr.msize;
this->mcapacity = arr.mcapacity;
//申請記憶體空間
this->paddr = new t[this->mcapacity];
//資料拷貝
for (int i = 0; i < this.msize; i++)
return *this;
}void pushback(t& data)
//呼叫拷貝構造後者 =號操作符過載
//1.物件元素必須能夠被拷貝
//2.容器都是值寓意,而非引用寓意,向容器中放入元素,都是放入的元素的拷貝份,而非本身
//3.如果元素的成員有指標,注意深拷貝和淺拷貝的問題;
this->paddr[this->msize] = data;
this->msize++;
}//t&&對右值進行取引用,c++11的新標準
void pushback(t&& data)
this->paddr[this->msize] = data;
this->msize++;
}public:
//一共可以容下多少個元素
int mcapacity;
//當前陣列有多少元素
int msize;
//儲存資料的首位址
t* paddr;
};void test01()
cout
<< endl;
}class person{};
void test02()
int main()
總結:
1、了解左值、右值的概念;
2、複習淺拷貝和深拷貝的區別;
MyArray類模板實現
define crt secure no warnings include include using namespace std template class myarray myarray const myarray arr myarray t operator int index myarra...
自定義陣列容器MyArray框架
includeusing namespace std template class myarray 拷貝構造 myarray const myarray arr myarray 過載運算子 t operator int nindex 過載運算子 myarrayoperator const myarr...
類模板 模板類
下面定義的是類模板,用int例項化t後成為模板類。例項化類模板的語法 類名 模板實參表 結合下例即 array就是將類模板array例項化為模板類的語法。類模板 include using namespace std templateclass array array t operator int ...