原创 RTP封裝,UDP發送並用wireshark抓rtp包
1. 先上code 客戶端: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/
原创 C++類 用組合模式 寫文件目錄
#include <iostream> #include <list> #include <string> #include <algorithm> #include <vector> using namespace std; /
原创 封裝、繼承、多態
1、不要用基類指針操作派生類對象數組 = = => 基類和派生類的步長不一致 2、虛析構函數:= = => 通過基類指針釋放派生類對象 #include <iostream> // 封裝:信息隱藏,對外提供訪問控制 // 繼承
原创 用C++寫建造者模式
根據 大話設計模式 第13章的建造者模式,用C++實現一遍 #include <iostream> #include <vector> #include <string> using namespace std; //Produc
原创 用簡單工廠設計模式寫加減乘除運算
#include <iostream> #include <string> using namespace std; class Operator { public: void set(int a, int b)
原创 運算符重載
運算符重載: 1、外部實現 2、內部實現:外部到內部 ----> 去掉左操作數,由this指針代替 注意: 1、不能改變運算符的優先級 2、不能改變運算符的操作數個數 3、不能自創運算符 4、同一種運算,內部和外部實現只能存在一個
原创 對象的構造
#include <iostream> using namespace std; // 對象的構造: 誰的成員誰負責初始化 ---> 手動調用相應的構造函數 ---> 在對象初始化列表中 class Parent { publ
原创 對象模型
#include <iostream> using namespace std; // 對象模型 類型兼容性原則 class Parent { public: Parent() {} Parent(
原创 構造函數
如果類中一個構造函數都沒有,系統會自動添加一個 無參構造數,該函數什麼都不做 如果類中沒有析構函數,系統會自動添加一個析構函數,該函數什麼都不做 // new : 創建會自動調用構造函數 // delete : 釋放對象的時候會
原创 ++、--運算符重載
#include <iostream> using namespace std; class Complex { friend Complex &operator ++(Complex &c); friend Co
原创 對象初始化列表、深拷貝
對象初始化列表: 構造函數後加 “ :”, 後面接上要初始化的成員,各個成員之間以逗號進行區分 Test(int a, int b): m_a(),m_b(b) {} 1、對象初始化列表的執行要優先於 構造函數 2、對象的初始化順序
原创 類中的 static 的用法、類、友元
類中的 static 的用法 1、類的靜態成員變量,該屬性不屬於某個成員,是類的屬性,是所有成員所共享的 2、靜態成員變量必須要在類的外部進行初始化 3、靜態成員(變量、函數)使用方式: 通過變量使用 通過類名使用 4、靜態的成員函數
原创 左移、右移運算符重載
#include <iostream> using namespace std; class Complex { friend ostream &operator <<(ostream &out, Complex &c)
原创 多繼承
#include <iostream> using namespace std; // 多繼承 class Parent1 { public: void setP1(int a, int b) {
原创 虛繼承
#include <iostream> using namespace std; // 虛繼承: 解決多繼承中的二義性 ===> 僅適用於有公共基類的情況 // 繼承之前添加一個關鍵字: virtual ===> 會