原创 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 ===> 會