原创 C++訪問控制符詳解

一、前言    C++標準中定義了三種類成員訪問控制符:public、protected和private,分別譯爲公有的、保護的、私有的。當然,這是在一個類的內部聲明這三種控制符的意思,那要是在一個繼承體系中會是怎麼樣的呢?二、控制符訪問

原创 深入理解C++對象模型之Data Member存取成本

一、前言     對於C++語言而言,不好理解的地方大多數由繼承和多態這兩個東西產生,比如說一個C++類型的內存佈局,會因爲其是繼承而來的派生類或者獨立類而不同,如果是派生類,由於繼承的存在,它需要包含基類部分,因此其內存佈局(模型)需要

原创 深入理解C++對象模型之拷貝構造函數

一、前言     如果一個Class沒有聲明一個copy constructor,編譯器就會隱式聲明一個copy constructor,只有編譯器需要的時候,編譯器纔會定義一個copy constructor實例,併合成於程序之中,而編

原创 對宏定義的作用域的一點思考

一、前言     在C語言代碼或C++代碼中宏定義#ifndef……#define……#endif主要是爲了避免頭文件重複引用,那它是怎麼一個避免機制呢?這就與宏定義的作用域有關了。 二、宏定義作用域     首先,C語言標準中宏定義的

原创 鏈接器之靜態鏈接與動態鏈接

一、前言 最近在項目中需要用一個公司的CAN卡,然後到官網下載官方提供的庫文件,下載下來的有3個文件.h、.lib、.dll,OK,現在主角出現了,.lib和.dll。 其實一般的庫文件都包含了這三個文件,無奈自己接觸的還是比較少,目前爲

原创 白話算法之【動態規劃入門】

什麼是動態規劃?         動態規劃(Dynamic Programming,所以我們簡稱動態規劃爲DP)是運籌學的一個分支,是求解決策過程(decision process)最優化的數學方法。20世紀50年代初美國數學家R.E

原创 桶排序與基數排序

一、前言     在各種內部排序算法中,有證明已經顯示:只使用比較的一般排序算法在最壞情況下的時間複雜度爲O(NlogN),但是在已知某些額外信息或特殊情況下,可以達到線性時間的排序時間複雜度,就是桶排序和基數排序。 二、桶排序    

原创 Linux讀取串口數據

一、前言     最近項目中需要在Linux系統下讀取串口數據,由於使用的Ubantu系統,開發工具是Qt Creator,所以首先在網上百度了一下,找到了幾篇博客,大致內容上都差不多。由於使用的Qt4,其沒有自帶的串口類(Qt5就自帶了

原创 C++函數中const引用形參的一點理解

一、寫在前面         作爲一個初級而且想成爲高級的程序員,對浩瀚的代碼世界總是充滿的好奇與學習的動力,哈哈,別笑,我是認真的。最近之所以頻繁的更新博文,而且知識點相對比較廣,但大多也是C++各方面的基礎,再加上最近時不時度一些別人

原创 對C++IO庫的一點理解

    這裏並不是講解C++IO的使用方法,只是關於自己對C++IO庫的一點理解,也就是用我自己的解釋說明C++IO庫到底是什麼東西?     首先,C++語言並不是直接處理輸入輸出,而是通過一族定義在標準庫中的類型來處理IO,這些類型只

原创 (一)初識線程與進程

一、前言     最近項目中用到多線程,問題背景是:有個數據採集設備,使用以太網進行通信,一旦建立以太網鏈接之後,該設備自己的內置程序就可以並行的循環接收多個類型的數據(也就是它自己有一個數據接收線程),那麼現在我需要以一定的週期讀取這些

原创 一幅圖理解計算機系統硬件組成

一、前言     試想一下,我們編輯好HelloWord程序,如果是C/C++語言編寫,一般是一個.c或者.cpp的文件,這是一個文本文件,你一般會把它放在你的硬盤裏面,難道不是嗎?比如桌面、D、E盤下,那當我們打算運行HelloWord

原创 線性表、鏈表、棧、隊列的關係

一、前言     程序員在編程實戰操作面前有兩個攔路虎,第一個是用遞歸的思想去解決問題,第二個是數據結構與算法的應用。對於遞歸,由於其神奇的薄面紗總是然我們覺得難以理解,而大多數遞歸解法還是需要承擔一定的計算負擔的,因此我覺得能理解其思想

原创 深入理解C++對象模型之構造函數

一、前言     學習C++的同學一般都知道有構造函數這個東西,我相信很多同學的理解就是構造函數是用來初始化類成員的,是的,構造函數的本質確實是這樣的,但很多同學會有以下兩個誤解:         (1)任何class如果沒有定義任何構造

原创 C++棧的應用——後綴表達式求值、中綴表達式到後綴表達式的轉換

一、前言     通常我們把棧歸爲一種基本的數據結構,同時它也是一種線性表結構,也就是說你要自己實現一個棧的數據結構,既可以用數組實現,也可以用鏈表實現。棧最主要的特點就是“先進後出”,因爲棧只有一個入口和出口。   二、實現棧結構