案例 陣列模板類

2021-07-26 02:31:58 字數 1567 閱讀 3907

傳智掃地僧課程學習筆記。

這裡的學習,是為了學習後面的資料結構,

因為後面的資料結構的演算法的實現,是以模板的方式實現的,

myvector.h

#include "iostream"

using namespace std;

template class myvector

protected:

t *m_space;

int m_len;

private:

};

myvector.cpp

#include "iostream"

using namespace std;

#include "myvector.h"

template ostream& operator<<( ostream &out, const myvector&obj)

template myvector::myvector( const myvector &obj)

}template t& myvector::operator( int index)

template myvector& myvector::operator=( const myvector&obj)

m_len = obj.m_len;

m_space = new t[m_len];

for( int i = 0; i

#include "iostream"

using namespace std;

#include "myvector.cpp"

class teacher

teacher(char *name, int age)

void printt()

private:

int age;

char name[32];

//char *pname2;

};void main()

cout << tarray;

system("pause");

}

模板類,還是很神奇的,

基礎資料型別隨便用,

還可以裝自己定義的類物件,雖然後面還有需要解決的問題,但是感覺好厲害,

容器本身已經實現了一些操作符的重寫,但是這還不夠,所儲存元素也要實現重寫,

你如果不信,舉個例子,就去看容器《操作重寫的**,加入我們的元素是自定義的,

那裡的對應**就是out<

結論1:如果把teacher放入到myvector陣列中,並且teacher類的屬性含有指標,就是出現深拷貝和淺拷貝的問題。

結論2:需要teacher封裝的函式有:

1)  重寫拷貝建構函式 

2)  過載等號操作符 

3)  過載左移操作符。

理論提高:所有容器提供的都是值(value)語意,而非引用(reference)語意。容器執行插入元素的操作時,內部實施拷貝動作。所以stl容器內儲存的元素必須能夠被拷貝(必須提供拷貝建構函式)。

陣列類封裝案例C 模板

陣列類封裝案例 實現乙個通用的陣列類,要求如下 可以對內建資料型別以及自定義型別的資料進行儲存 將陣列中的資料儲存到堆區 建構函式中可以傳入陣列的容量 提供對應的拷貝建構函式以及operater 防止淺拷貝問題 提供尾插法和尾刪法對陣列中的資料進行增加和刪除 可以通過下標的方式訪問陣列中的元素 可以...

類模板案例

實現乙個通用的陣列類,要求如下 myarray.hpp中 pragma once include using namespace std templateclass myarray 拷貝構造 myarray const myarray arr 過載 操作符 防止淺拷貝問題 myarray opera...

類模板案例 C

本案例要求 可以對自定義或內建資料型別進行操作 陣列中的資料儲存到堆區 按客戶要求的容量進行陣列的建立 防止淺拷貝以及過載 利用尾插法和尾刪法進行增加和刪除 可以通過下標訪問陣列元素,可以獲取當前陣列中的容量及元素個數資訊。由於類模板的成員函式再呼叫的時候才建立,不好分檔案編寫,所以新建標頭檔案用....