經過長時間的學習終於可以開始tinystl的仿(chao)寫工作了,本文參考了這位大神的github,坦白講我只是補充了注釋,因為tinystl的**真的非常經典而我又沒什麼這種大型專案的經驗,所以只能這樣做,不過相信能夠有助於大家的學習
#強烈建議按順序閱讀本專欄
cowptr:原生指標
閱讀這篇文章了解原生指標 泛型指標 智慧型指標
本文實現的原生指標並沒有達到應有的效果,僅僅實現了基本功能
cowptr.h
#pragma once
#ifndef _cowptr_h_
#define _cowptr_h_
#include
"memory.h"
namespace mystl
proxy
(const proxy&)
=default
; proxy&
operator=(
const proxy&)
=default
;const t&
operator*(
)const
; t&
operator*(
);const t *
operator
->()
const
; t *
operator
->()
; cow_ptr
&operator=(
const t& val)
;operatort(
)const
;private
: cow_ptr
*cp_;};
}//未能完全模擬原生指標操作,只供參考,詳情見單元測試
template
<
class
t>
class
cow_ptr
;template
<
classt,
class..
. args>
cow_ptr
make_cow
(args.
..args)
}#include
"detail\cowptr.impl.h"
#endif
cowptr.impl.h
#pragma once
#ifndef _cowptr_impl_h_
#define _cowptr_impl_h_
namespace mystl
template
<
class
t>
//將原生指標轉化為share指標再返回
t& proxy
::operator*(
)template
<
class
t>
const t *proxy
::operator
->()
const
//將原生指標轉化為share指標再返回
template
<
class
t>
t *proxy
::operator
->()
//轉化為share指標再返回
template
<
class
t>
cow_ptr
& proxy
::operator=(
const t& val)
template
<
class
t>
proxy
::operatort(
)const
}//預設構建為空
template
<
class
t>
cow_ptr
::cow_ptr
(t *p =
nullptr):
ptr_
(p)template
<
class
t>
template
<
class
d>
cow_ptr
::cow_ptr
(t *p, d d)
:ptr_
(p, d)
template
<
class
t>
cow_ptr
::cow_ptr
(const cow_ptr& cp)
template
<
class
t>
cow_ptr
& cow_ptr
::operator=(
const cow_ptr& cp)
return
*this;}
template
<
class
t>
typename cow_ptr
::element_type *cow_ptr
::get()
template
<
class
t>
const
typename cow_ptr
::element_type *cow_ptr
::get()
const
template
<
class
t>
cow_ptr
::operator
bool()
const
template
<
class
t>
const
typename cow_ptr
::proxy cow_ptr
::operator*(
)const
template
<
class
t>
typename cow_ptr
::proxy cow_ptr
::operator*(
)template
<
class
t>
const
typename cow_ptr
::proxy cow_ptr
::operator
->()
const
template
<
class
t>
typename cow_ptr
::proxy cow_ptr
::operator
->()
template
<
classt1,
class
t2>
bool
operator==(
const cow_ptr
& cp1,
const cow_ptr
& cp2)
template
<
class
t>
bool
operator==(
const cow_ptr
& cp, nullptr_t p)
template
<
class
t>
bool
operator
==(nullptr_t p,
const cow_ptr
& cp)
template
<
classt1,
class
t2>
bool
operator!=(
const cow_ptr
& cp1,
const cow_ptr
& cp2)
template
<
class
t>
bool
operator!=(
const cow_ptr
& cp, nullptr_t p)
template
<
class
t>
bool
operator
!=(nullptr_t p,
const cow_ptr
& cp)
}#endif
第十九章 事務
redis的事務是指將多個命令請求打包,一次性地,按順序執行的機制。通過multi exec watch等命令實現事務功能。19.1.1 事務的開始 multi命令的執行代表了乙個事務的開始,會將執行該命令的客戶端由非事務狀態切換成事務狀態 在客戶端狀態的flags屬性中開啟redis multi標...
第十九周作業
1 實現永久重定向,當使用者訪問 www.magedu.org 這個網域名稱時我想讓他跳轉到 www.magedu.com 的主頁面,請寫出配置過程 location 2 rewrite案例 判斷檔案是否存在,要求 當使用者訪問到公司 的時輸入了乙個錯誤的 url 可以將使用者重定向至 www.ma...
第十九講 其他類
回顧 1.多型如何實現的?過載和虛方法覆寫 2.什麼情況用虛成員?不確定的用途,留待子類擴充套件覆寫時 3.什麼情況需要覆寫?功能近似,不必要重新建立新方法時 4.為什麼需要抽象類和抽象方法?規劃乙個類,但當前無法或不必具體現實時 主要內容 1.object 類 所有的.net類都派生於system...