Time of Update: 2018-12-05
C++ Placement New placement new是重載operator new的一個標準、全域的版本,它不能被自訂的版本代替(不像普通的operator new和operator delete能夠被替換成使用者自訂的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; } 首先我們區分下幾個容易混淆的關鍵詞:new、operator new、placement
Time of Update: 2018-12-05
1、 一般而言,class的data members應該被初始化,並且只在constructor中或者是在class的member functions中指定初值。其他任何操作都將破壞封裝性,使class的維護和修改更加困難。2、 可以定義並調用invoke一個pure virtual function,但它只能被靜態調用,不能經由虛擬機器制調用。每一個derived class destructor會被編譯器加以擴充,靜態調用每一個virtual base class以及上一層base
Time of Update: 2018-12-05
發布純python的程式可以使用現有的工具,如py2exe,bbFreeze。但我不知道能否打包嵌入python的C++程式,另外需要注意的是py2exe目前不支援2.6以後的新版本,bbFreeze貌似還依賴其他庫。 下面介紹下我這幾天搜尋的一個簡單的解決方案: 以我電腦上安裝的python27為例,將python27目錄下的dlls和lib檔案夾下的檔案拷貝到同一個檔案夾xx下,然後將xx檔案夾下的檔案壓縮成python27.zip,注意只壓縮檔,
Time of Update: 2018-12-05
轉載註明出處:http://blog.csdn.net/you_lan_hai/article/details/8597451// TestPython.cpp : 定義控制台應用程式的進入點。// author: 遊藍海// blog: http://blog.csdn.net/you_lan_hai#include "stdafx.h"#include <iostream>using namespace std;#include
Time of Update: 2018-12-05
如果基類中有虛函數,衍生類別有和基類同名的虛函數,也有不同名的虛函數,那麼衍生類別的虛函數表的內容是按照什麼規則儲存的呢?#include <iostream>#include <tchar.h>using namespace std;class Human{public:virtual void walk(){cout << _T("Human::walk") << endl;}virtual void speak(){cout <<
Time of Update: 2018-12-05
前面介紹了一種最笨的方式,他的缺點就是冗餘太多,浪費空間太大。 今天介紹一種最佳化方法,僅抽取程式中用到的部分。 要下班了,先貼上實現代碼,改天有空再補上原理。#-*- coding:gbk -*-import sysimport osimport shutil#獲得程式中所有模組的路徑def getModulesPath() :lst = []#sys.modules是一個字典,資料格式如下:#{'site': <module 'site' from
Time of Update: 2018-12-05
C++內聯函數是調整程式效能的一個重要方法在C++中,函數調用需要建立棧環境,進行參數的複製,保護現場,回複現場等,這些工作都是比較大的開銷。程式的效率因此收到很大的影響。所以現在很多程式啟動並執行額外工作都已經硬體化了,來減少啟動並執行開銷。儘管如此,仍有一些細微的開銷可以最佳化,當然,如果對於一個函數的調用很頻繁,那就需要內聯函數來最佳化。內聯函數原理:如果一個函數頻繁的被程式調用,則會很浪費時間來進行函數的頻繁調用。內聯函數的基本思想就是將內聯函數直接放在程式運行處,相當於直接將函數代碼放
Time of Update: 2018-12-05
當基類和衍生類別中分別存在不重名的虛函數的時候,衍生類別對象的虛函數表中的虛函數地址是如何排列的?#include <iostream>#include <tchar.h>using namespace std;class Human{public:virtual void HumanPrint(){cout << _T("Human::Print") << endl;}};class Man: public
Time of Update: 2018-12-05
基類和衍生類別的虛函數同名時,衍生類別對象的虛函數表如何工作?#include <iostream>#include <tchar.h>using namespace std;class Human{public:virtual void Print(){cout << _T("Human::Print") << endl;}};class Man: public Human{public:virtual void Print(){cout
Time of Update: 2018-12-05
文章目錄 前置知識配置子LoggerFreeJudger項目中使用的完整設定檔歡迎加入 C++開源跨平台OJ系統判題核心FreeJudger(三)——log4cxx同時使用多個記錄檔By 馬冬亮(凝霜 Loki)一個人的戰爭(http://blog.csdn.net/MDL13412)前置知識log4cxx可以使用設定檔進行設定,並且其設定方式與log4j相容;log4cxx庫對日誌流設定,只需更改設定檔中的appender屬性;log4
Time of Update: 2018-12-05
簡單的從txt文檔中擷取使用者名稱和密碼並驗證 #include<stdio.h>#include<string.h>int recog_pwd(char name[20],char pwd[20]);void main(){int isok;char *name = "osd";char *pwd = "123";if((recog_pwd(name,pwd))==1){printf("user and pwd right\n");}else
Time of Update: 2018-12-05
文章目錄 項目背景功能需求系統架構項目組織項目首頁歡迎加入 C++開源跨平台OJ系統判題核心—— FreeJudgerBy 馬冬亮(凝霜
Time of Update: 2018-12-05
文章目錄 前言介面設計log4cxx封裝解決log4cxx中文亂碼歡迎加入 C++開源跨平台OJ系統判題核心FreeJudger(二)——logger設計By 馬冬亮(凝霜
Time of Update: 2018-12-05
逆向反組譯碼代碼推算C++的局部變數上文說明了C++反組譯碼後的EBP,ESP寄存器都是做什麼用的,相信大家已經有所瞭解,如果有沒看過的請參考下文:http://www.cnblogs.com/pugang/archive/2012/05/25/2518499.html本文不會對其再做過多的講解,如果還有問題,歡迎大家留言討論。首先明確本文要解決的問題:在沒有原始碼的情況下如何看明白我們的彙編代碼中哪些是局部變數。為了便於說明我將C++代碼和彙編代碼在一起,完整代碼如下:int Internal
Time of Update: 2018-12-05
轉載於:http://www.cnblogs.com/pugang/archive/2012/05/25/2518499.html最近在分析一個進程崩潰的嚴重問題,其中有些過程分析需要對ebp, esp有清晰的理解,對於ebp和esp相信大家都很熟悉了,但是為了使本文自成體系,我還是解釋一下。ebp--棧底指標esp--棧頂指標 ,簡化後的代碼調用過程如下:void Layer02(){ int b = 2;} void Layer01(){ int a = 1;
Time of Update: 2018-12-05
基類和衍生類別共用一個虛函數表嗎?#include <iostream>#include <tchar.h>using namespace std;class Human{public:virtual void Print(){cout << _T("Human::Print") << endl;}};class Man: public Human{public:virtual void Print(){cout << _T("Man:
Time of Update: 2018-12-05
Question:父類:class CParent{....};繼承類的聲明比較特別:class CChild : virtual public CParent{....}請問,這個"virtual"是什麼作用及含義?---------------------------------------------------------------這個"virtual"是什麼作用及含義?證明這個CParent是CChild 的虛基類虛基類 的 作用虛基類是指:class SubClass : vir
Time of Update: 2018-12-05
#include <iostream>#include <tchar.h>using namespace std;class Human{public:virtual void Print(){cout << _T("Human::Print") << endl;} virtual void Walk(){cout << _T("Human::Walk") << endl;}};int _tmain(int argc,
Time of Update: 2018-12-05
在c/c++中,命令列參數的傳遞是利用main()函數進行形參傳遞實現的。 為了實現命令列參數我們將使用main(int argc,char* argv[])這樣的形式進行定義argc和argv可以換成你自己喜歡的名稱,不一定要用argv,argc這些形式只是習慣而已,char* argv[]我們前面已經講述過,這就是一個指向指標數組,argv就是一個指標數組名,argv不是常量指標,而是具備變數特性的變數指標,它是可以移動的,由此我們可以改寫成char*
Time of Update: 2018-12-05
問題1: 一個類對應一個虛函數表還是一個對象對應一個虛函數表?#include <iostream>#include <tchar.h>using namespace std;class Human{public:virtual void Print(){cout << _T("Human::Print") << endl;}};int _tmain(int argc, TCHAR argv[], TCHAR envp[]){Human Modi;