原创 [C++]22種設計模式的C++實現 C++設計模式

C++設計模式 前言 1. 代碼倉庫 https://github.com/TOMO-CAT/CppDesignPattern 2. 前置知識 UML類圖與面向對象編程 軟件設計原則與SOLID原則 創建型模式 工廠方法模式(Fa

原创 [C++面試]拷貝初始化與直接初始化

總結 初始化值的是創建變量時賦予變量一個值(不同於賦值的概念) 使用等號=初始化對象時是拷貝初始化,否則是直接初始化 直接初始化也可能調用拷貝構造函數,拷貝初始化可以不調用拷貝構造函數 初始化概念 對象是類的實例化,在內存中會佔據一個一

原创 [C++面試]C與C++(面向過程與面向對象)區別

綜述 C是一門結構化語言,重點在於數據結構與算法,側重於對於輸入進行運算得到輸出(面向過程)。而C++考慮的是構造一個對象模型,通過獲取對象的方法和屬性來得到輸出(面向對象)。 面向對象與面向程序 1. 區別 面向對象:將問題拆解成多個步

原创 [C++面試]多態

概念 多態在代碼中指的就是“一個接口,多種實現”(相同的調用方法有不同的實現方式),屬於面向對象編程的核心概念。廣義的多態包括靜態多態和動態多態,其中靜態多態指的是編譯時就可以確認使用的接口,動態多態指的是運行時才能確定具體引用的接口。

原创 [C++面試]宏相關問題

1. 宏常量與宏函數 C++中用#define <宏名> <字符串>命令定義宏,在代碼中將字符串替換宏名出現的位置。定義宏的方式根據是否包含參數可以分爲兩種: #define <宏名> <字符串> #define PI 3.1415926

原创 [Skill]GitBook搭建 Gitbook

Gitbook Linux centos7.2安裝方式 1. 安裝node.js 從官網拿到文件的下載鏈接: 英文網址:https://nodejs.org/en/download/ 中文網址:http://nodejs.cn/downl

原创 C++函數參數傳遞

引用傳遞和值傳遞 1. 值傳遞 當形參是非引用類型時,實參的值會被拷貝給形參,實參和形參是兩個完全不同的對象,函數對形參做的所有操作都不會影響實參。 Tips:當形參是指針類型時,形參和實參也是兩個完全不同的指針,只不過他們指向同個對象。

原创 C++標準庫類型迭代器

簡介 所有標準庫類型都可以使用迭代器,但是其中只有少數幾種才同時支持下標運算符,有迭代器的類型都擁有begin()和end()的成員函數: /* * b和e類型相同 * 1) b: 表示v的第一個元素 * 2) e: 尾後迭代器, 表

原创 C++中五花八門的初始化規則

總結 初始化的概念:創建變量時賦予它一個值(不同於賦值的概念) 類的構造函數控制其對象的初始化過程,無論何時只要類的對象被創建就會執行構造函數 如果對象未被用戶指定初始值,那麼這些變量會被執行默認初始化,默認值取決於變量類型和定義變量的位

原创 C++中變量聲明與定義的規則

聲明與定義分離 Tips:變量能且僅能被定義一次,但是可以被多次聲明。 爲了支持分離式編譯,C++將定義和聲明區分開。其中聲明規定了變量的類型和名字,定義除此功能外還會申請存儲空間並可能爲變量賦一個初始值。 extern 如果想聲明一個

原创 C++中的POD類型 C++ POD類型

C++ POD類型 背景 POD(Plain Old Data)指的是C++定義的和C相兼容的數據結構。 幾乎所有的系統底層都是用C寫的,當時定義的基本數據類型比如int、char、float、枚舉、指針、數組和結構等通過二進制拷貝後還

原创 C++11顯式虛函數重載:override與final

場景 在傳統C++中,經常容易發現意外重載虛函數的事情: struct Base { virtual void foo(); }; struct SubClass: Base { void foo(); }; 有下列三種

原创 解決python3中關於import的疑難雜症 python中import與包管理

python中import與包管理 概念:模塊與包 模塊module:一般是以.py爲後綴的文件,也包括.pyo、.pyc、.pyd、.so和.dll後綴的文件,模塊內定義了函數、類以及變量 包package:包是含有若干個模塊的文件夾,

原创 《C++Primer》算法概覽 C++ 算法概覽

C++ 算法概覽 beg和end表示元素範圍的迭代器 beg2表示第二個序列開始位置迭代器,end2表示第二個序列末尾迭代器(如果有的話)。如沒有end2則假定系列2至少與beg和end表示的範圍一樣大。beg和beg2類型不必匹配,但必

原创 《C++Primer》第十九章 第十九章 特殊工具與技術

第十九章 特殊工具與技術 控制內存分配 1. 重載new和delete 重載這兩個運算符與重載其他運算符的過程大不相同。想要真正重載new和delete的方法,首先要對new表達式和delete表達式的工作機制足夠了解: // new表達式