原创 理解extern "C",C++函數與C函數互調

爲什麼需要extern “C”? extern “C” 是編譯器鏈接指示符。需要知道,對於不同的編譯器,在編譯一個函數時,編譯出來的函數名稱或參數排列的順序可能是不同的。這就導致用一種語言去調用另一種語言函數的時候,需要告訴編譯

原创 數組首地址&a偏移一個單位

po上代碼先: #include <stdio.h> void main() { int a[5] = {1,2,3,4,5}; int *ptr = (int *)(&a + 1); printf("%

原创 虛函數,實現多態性的重要機制

按慣例以實例做分析。 //Instrument1.cpp #include <iostream> using namespace std; enum note{A,B,C}; class Instrument{ public:

原创 CentOS下github生成公鑰

今天在linux下使用git push時發生了以下錯誤: [root@localhost QuXuan]# git push origin master Permission denied (publickey). fata

原创 右擊QTableView某行後獲取該行數據

因爲我要實現右擊菜單功能,然後通過選擇菜單的選擇對該行數據做修改,所以我需要先獲取到該行的數據,因爲QTableView本身是視圖,是對數據進行展示,所以想直接獲取到該行的model是不可行的。 看通過以下方法來獲取行各字段的數據

原创 賦值運算符函數 operator=

當我們寫一個賦值運算符函數時,主要注意以下幾點: 1)令operator=返回一個reference to *this。只有返回一個引用,才允許連續賦值,如:x = y = z = 3; 參考effective C++ 條款1

原创 C語言:內存存儲、棧、堆等區別

內存存儲 首先先了解一下C/C++的內存存儲,一般把內存理解成4個分區:棧、堆、全局/靜態存儲區和常量存儲區。 1)棧:用於那些在編譯期間就能確定存儲大小的變量的存儲區,用於在函數作用域內創建,在離開作用域後自動銷燬的變量的存儲區

原创 求二叉樹的寬度

二叉樹的寬度:樹中最大的層節點數。 主要思路爲:樹不爲空時,初始化父節點數(LastLevelWidth)爲1(即頭結點pop進隊列),通過判斷queue是否爲空表示樹全部節點遍歷完成,以父結點數(LastLevelWidth)

原创 重載new和delete,處理內存溢出

很多時候,我們使用new/delete來分配和釋放內存。那麼這篇問題主要講的是,使用new來處理實際編程中可能出現的內存泄漏的問題。奇怪,既然你說delete可以釋放內存呢,只要用好這兩個函數,保證匹配不就得了。然後這是一種很被動

原创 C++ explicit關鍵字聲明構造函數

對用戶自定義類型的對象而言,初始化由構造函數執行。 所謂default構造函數時一個可悲調用而不帶任何實參者,默認構造函數可由類型隱式提供。 class A{ public: A(); //default構造函

原创 給函數傳遞二維數組指針

很多時候,函數的形參很容易定義爲指針的指針形式(如:int **number),這樣可用來表示指向整型指針的指針,但我們傳遞的可是一個二維數組,其指針該是指向整型數組的指針。這就是容易出現模糊的點。 那如果形參形式是(int **

原创 向量vector的實現

vector的官方說明: http://www.cplusplus.com/reference/vector/vector/ STL(Standard Template Library)標準模板庫中,vector是常用的數據結構

原创 C基礎面試題

1、全局變量和局部變量的應用: 局部變量會屏蔽全局變量,函數中默認使用的是局部變量,而我們可通過在變量名前添加“::”來指定訪問全局變量。 全局變量可聲明在可被多個.c文件包含的頭文件中,但在這些同名的全局變量中只能有一個C文

原创 Qt 數據庫學習記錄

sql_interface.h #ifndef SQL_INTERFACE_H #define SQL_INTERFACE_H class ModCat{ public: int mod_cat_id; QString n

原创 qt學習記錄

main.cpp #include "display_da.h" #include <QtGui/QApplication> int main(int argc, char *argv[]) { // QApplication::ad