原创 UE4之智能指針:引用計數相關類

引用計數類 默認的Deleter: template <typename Type> struct DefaultDeleter { FORCEINLINE void operator()(Type* Object) const

原创 UE4之Delegate:組播

定義 #define FUNC_DECLARE_MULTICAST_DELEGATE( MulticastDelegateName, ... ) \ typedef TMulticastDelegate<__VA_ARGS__>

原创 UE4之Delegate概覽

UE4中的代理宏定義,都在DelegateCombinations.h中聲明 代理宏概覽 (一)無參數版本 單播 #define DECLARE_DELEGATE( DelegateName ) FUNC_DECLARE_DELE

原创 UE4之Delegate:動態單播

定義 #define FUNC_CONCAT( ... ) __VA_ARGS__ #define DECLARE_DYNAMIC_DELEGATE( DelegateName ) BODY_MACRO_COMBINE(CURR

原创 UE4之Delegate:單播

普通單播的定義 #define DECLARE_DELEGATE( DelegateName ) FUNC_DECLARE_DELEGATE( DelegateName, void ) #define FUNC_DECLARE_D

原创 【UE4學習】TTuple源碼分析

TTuple定義 template <typename... Types> struct TTuple : UE4Tuple_Private::TTupleImpl<TMakeIntegerSequence<uint32, siz

原创 C++11: enable_if

首先了解一個概念:SFINAE : substitution failure is not an error, 替代失敗不是錯誤 template<typename T> typename std::enable_if<sizeo

原创 《C標準庫》——之

<string.h>裏的字符串操作函數是經常要用到的,因此閱讀了源碼後自己實現了一些: 拷貝函數 void * Mymemcpy(void * sDst, const void * sSrc, size_t count) { asse

原创 C++ Pirmer : 第十四章 : 重載運算符與類型轉換之函數調用運算符與標準庫的定義的函數對象

函數調用運算符 struct test { int operator()(int val) const { return (i > 0 ? i : -i); } }; 所謂的函數調用就是一個類重載了函數調用符,類在使用重載函數調用符時接

原创 C++ Pirmer : 第十五章 : 面向對象程序設計之基類和派生的定義、類型轉換與繼承與虛函數

基類和派生類的定義以及虛函數 基類Quote的定義: classs Quote { public: Quote() = default; Quote(cosnt std::string& book, double

原创 C++ Primer : 第十四章 : 重載運算與類型轉換之重載運算符

重載前須知 重載運算符是特殊的函數,它們的名字由operator和其後要重載的運算符號共同組成。 因爲重載運算符時函數, 因此它包含返回值、參數列表和函數體。 對於重載運算符是成員函數時, 它的第一個運算對象被隱式的綁定到this指針上,

原创 抽象基類、訪問控制與繼承和繼承中的類作用域

抽象基類 一個基類是抽象基類,它的虛函數必須是一個純虛函數。純虛函數是虛函數後加 =0 來定義的, =0 只能出現在虛函數的類內聲明之後 : class Disc_quote : public Quote { public:

原创 C++ Primer : : 第十四章 : 重載運算符與類型轉換之類型轉換運算符和重載匹配

類型轉換運算符 class SmallInt { public: SmallInt(int i = 0) : val(i) { if (i < 0 || i > 255) throw std::out_of_range(