5 C STL之操作符過載 泛化

2021-09-14 05:40:38 字數 1880 閱讀 3360

reference operator*()

pointer opeator->()

self& operator++()

self operator++

(int

)

template

class complex

complex<

double

>c1(

2.5,

1.5)

;

泛化與特化

有乙個最泛化的做法,若指定的t是某乙個獨特的type有更好的做法,

為了更好的做出某個獨特的專屬的做法就是特化

例子為繪製直線:

數學方程式:泛化

對映到螢幕上的座標:特化

//泛化

template

struct _type_trasits

;_type_traints

::has_trivial_destructor//進入泛化

//特化 繫結為int

template<

>

struct _type_traits<

int>

;//特化

template<

>

struct _type_traits<

double

>

;//泛化

template

struct hash

;//特化 _stl_template_null 即template<>

_stl_template_null struct hash<

char

>

;_stl_template_null struct hash<

short

>

;_stl_template_null struct hash<

int>;.

....

.//泛化

template

class allocator;

//特化

template<

>

class allocator<

void

>

;}

偏特化(區域性特化)

區域性特化的區域性時指數量上的區域性。兩個變乙個,另乙個鎖定。(數量)

或者是若接受的是任意的型別,偏特化是設計為接受指標(範圍)

//泛化 vector可接受任何型別

template

class vector

;//偏特化 但是型別若為bool時,就是用這個偏特化的類

template

class vector

;//泛化 任意型別 乙個

template

struct iterator_traits

;//偏特化 接受的若是指標

template iterator_traits>

//偏特化

template

struct iterator_traits<

const t*

>

template 

inline

const t&

min(

const t&a,

const t&b)

stone r1(2

,3),

r2(2,

3),r3;

r3=min

(r1,r2)

;//編譯器對function template進行實參推導

class stone

泛型過載操作符比較

class program static bool bijiao t a,t b where t class public class a public static bool operator a a1,a a2 return false public static bool operator a...

C C 之 操作符過載

1.成員函式過載操作符 除 外其他操作符都可過載 1 a.雙目操作符宣告格式 class 類名 b.雙目操作符定義格式 返回值型別 類名 operator 型別 c.雙目操作符使用格式 類名 a 類名 b a b 或a.operator b 2 a.單目操作符過載宣告格式 class 類名 b.單目...

C 之操作符過載

1.所謂過載,就是賦予其新的意義。函式可以過載,操作符也可以過載。操作符的過載給我們的程式設計帶來了很大的便利,因為操作符只能對基本的資料型別進行操作,而對使用者自定義的類等資料結構型別不支援。因此只能對其操作符進行過載之後,才能更加方便地操作我們自定義的類物件等資料型別。但是值得注意的是並不是c ...