通用拷貝函式

2021-09-25 11:28:29 字數 1244 閱讀 3098

模板:

【優點】

模板復用了**,節省資源,更快的迭代開發,c++的標準模板庫(stl)因此而產生

增強了**的靈活

【缺陷】

1.模板會導致**膨脹問題,也會導致編譯時間變長

2.出現模板編譯錯誤時,錯誤資訊非常凌亂,不易定位錯誤

通用的拷貝函式

這裡結合兩者優點將(內建型別使用memcpy ) (自定義型別使用賦值)

1.列舉型別判斷

2.型別萃取(這裡只列舉部分內建型別)

//寫乙個通用的拷貝函式

class string

string(const string& s)

:_str(new char[strlen(s._str) + 1])

string& operator=(const string& s)

return *this;

} ~string() }

private:

char* _str;

};///使用truetype代表內建型別

struct truetype

};///使用falsetype代表內建型別

struct falsetype

};templatestruct typetraits

;template<>

struct typetraits;

template<>

struct typetraits;

template<>

struct typetraits;

template<>

struct typetraits;

template<>

struct typetraits;

template<>

struct typetraits;

templatevoid copy(t* dst, t* src, size_t size)

else

}int main()

; int arr1[10];

copy(arr1, arr, 10);

string s1 = ;

string s2[3];

copy(s2, s1,3);

return 0;

}

深拷貝通用方法

遞迴實現深拷貝 可拷貝物件,陣列,regexp物件,基本資料型別。doctype html en utf 8 x ua compatible content ie edge viewport content width device width,initial scale 1.0 document ...

寫乙個高效且通用的拷貝函式

通用的拷貝函式呢,對於大部分內建型別來說,都是可以直接拷貝的,我們呼叫memcpy 就可以直接完成,並且效率也很高。但是出現類似於string類時,直接用mempy 就會出現淺拷貝的問題。這時,我們就需要對各種型別進行選擇,選擇合適的拷貝方式。思路 首先,我們會考慮下多傳乙個引數進行判斷一下,這樣很...

拷貝建構函式,預設拷貝建構函式

拷貝建構函式,預設拷貝建構函式 1.c 的預設拷貝建構函式,從深度拷貝和淺拷貝說起 c 類的預設拷貝建構函式的弊端 c 類的中有兩個特殊的建構函式,1 無參建構函式,2 拷貝建構函式。它們的特殊之處在於 1 當類中沒有定義任何建構函式時,編譯器會預設提供乙個無參建構函式且其函式體為空 2 當類中沒有...