原创 malloc、free和new、delete的區別

首先應當明確的是malloc 和free搭配使用,new和delete搭配使用,最好搭配使用否則容易造成內存泄露! malloc/free 是在C語言頭文件<stdlib.h>中定義的原型爲: void * malloc(size_t s

原创 聊聊C++中複製構造函數和賦值操作符

複製構造函數:只有單個形參,而且形參是對本類類型對象的引用(常用const修飾),這樣的構造函數稱爲複製構造函數。與默認構造函數一樣,複製構造函數可由編譯器隱式調用。複製構造函數可以用於: 根據另一個同類型的對象顯式或隱式初始化一個對象

原创 C++中函數重載、覆蓋與隱藏的區別

重載(overload):指函數有不同的參數表,對同名函數的名稱做修飾,然後這些同名函數就構成了不同的函數。在同一可訪問區域內被聲明的幾個具有不同參數列表(參數的類型,個數,順序不同)的同名函數,程序會根據不同的參數列表來確定調用哪個函數

原创 C++對象佔多大內存?

前幾天被問到,在C++裏建立一個空類什麼都成員沒有,它佔多大內存?我一下子懵掉了,還真沒想過這個問題。後來查了下資料終於明白了,且聽我慢慢道來。 首先我們看一下這個測試程序: #include <iostream> using name

原创 在VC++中怎樣改變控件間的TAB切換順序?

在編輯界面按下ctrl+D鍵,就會出現所有控件的Tab鍵順序,按照自己想要的順序依次點擊控件,就可以重新安排順序。

原创 Python中文編碼過程中遇到的一些問題

首先,要明白encode()和decode()的區別  encode()的作用是將Unicode編碼的字符串轉換爲其他編碼格式。 例如:st1.encode("utf-8")  這句話的作用是將Unicode編碼的st1編碼爲utf

原创 局域網使用的IP地址範圍

局域網可用的IP地址範圍爲:  A類地址:10.0.0.0 - 10.255.255.255 B類地址:172.16.0.0 - 172.31.255.255  C類地址:192.168.0.0 -192.168.255.255  以

原创 VS2008無法執行添加/移除操作,因爲代碼元素"***"是隻讀的

有時候在給某個控件添加事件處理函數時會遇到這樣的問題“無法執行添加/移除操作,因爲代碼元素"***"是隻讀的” 搜了下往上的解決方法,可行的方法是:關閉工程,打開你的工程文件夾,刪除.ncb文件然後重新打開工程即可。

原创 Linux五個文件查找命令--which、whereis、find、locate和type

Linux下常用的文件查找命令有which、whereis、find、locate和type。在這裏不涉及具體的用法,只是對比下它們之間的區別。 which:在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。當

原创 C++之explicit

    C++中允許一種特殊的聲明比變量的方式。在這種情況下,可以將一個對應於構造函數參數類型的數據直接賦值給類變量。編譯器在編譯時會自動進行類轉換,將對應於構造函數參數類型的數據轉換爲類的對象。但是這種寬鬆的規則會破壞代碼的可讀性,並導

原创 設計模式之裝飾者模式Decorator Pattern

        近來在讀《Head first設計模式》這本書,感覺很不錯只是書中的代碼是用Java寫的。因爲我熟悉的是C++,於是自己寫了C++的例子程序。首先說說我的感受吧,學C++的話,先看《C++ Primer》搞明白了C++的各

原创 C11新特性推薦《C++ Primer 第五版》

C11新特性推薦《C++ Primer 第五版》

原创 按層遍歷二叉樹(隊列實現)

按層遍歷二叉樹的思路: 1)創建一個隊列用於保存指向Node節點的指針 2) 每遇到一個節點就遍歷該節點,然後將該節點不爲空的孩子壓入棧中 3) 從棧中取出一個節點,回到第二步 #include <iostream> #include

原创 淺談C++內存分配

C++內存分配由五個部分組成:棧、堆、全局代碼區、常量區、程序代碼區。如下圖所示: 1、棧區:函數中定義的局部變量放在棧中,函數執行結束時存儲單元自動釋放。棧內存分配一般採用寄存器來存取,存取效率高但是內存容量有

原创 N皇后問題解法及解的個數

一、什麼是N皇后問題? 在n×n格的棋盤上放置彼此不受攻擊的n個皇后。按照國際象棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於再n×n的棋盤上放置n個皇后,任何2個皇后不妨在同一行或同一列或同一斜線上。 二