Time of Update: 2018-12-03
按照預設規定,C++類中,若建構函式只有一個參數,則其有一個隱式轉換,將該建構函式對應資料類型的資料轉換為該類對象。如下面所示:class String {String ( const char* p ); //用C風格的字串p作為初始化值//…}String s1 = “hello”; //OK 隱式轉換,等價於String s1 = String(“hello”);但是有的時候可能會不需要這種隱式轉換,如下:class String { String ( int n
Time of Update: 2018-12-03
這個問題來自論壇提問,答案如下.這隻是一個簡單的ipconfig命令.如果是複雜的,比如oracle的exp之類的命令,能在調用的時候顯示出來,還是相當酷的.using System;using System.Windows.Forms;namespace WindowsApplication8...{ public partial class Form1 : Form ...{ public Form1() ...{ Initial
Time of Update: 2018-12-04
最近無聊,用C#在WM手機上寫個安防的小軟體,判斷網路攝影機前面的物體是否移動了,這個軟體很適合在出租房或者在宿舍住的時候使用,當然,其實也只是我無聊之作而已。。。。 在.NETCF上,C#要驅動DirectShow,是件非常困難的事情,DirectShow的介面不好弄,並且運行速度不夠C++的快,所以,我修改網上主流的控制DirectShow的代碼,做成DLL,讓普通的C#程式員也可以使用。這個DirectShow的DLL工程,可以到
Time of Update: 2018-12-04
最近有人問起C/C++混合編程的問題,google了一些資料放這裡==================================================http://www.gbunix.com/htmldata/2004_12/14/20/article_828_1.html如果C++程式要調用已經被編譯後的C函數,該怎麼辦?假設某個C函數的聲明如下:void foo(int x, int
Time of Update: 2018-12-04
C++ new_handler空間分配失敗處理 動態分配空間、記憶體動態分配與回收對於任何一個程式員來說都尤為重要,特別是嵌入式C/C++程式員更為如此,malloc, remalloc, new等等,很有可能就申請空間失敗,對申請失敗的異常處理更是比較棘手。在C++中提倡使用new來代替malloc,因為new比malloc更加安全,更加效率。 很多程式員,包括我自己都喜歡性的使用這種C/C++代碼來申請空間。 #include <iostream>#include
Time of Update: 2018-12-04
線程1.Thread類 1.1概述 Ice中的基礎線程是由ThreadControl類和Thread類來提供的(在IceUtil/IceUtil.h中定義): Thread類是一個抽象基類,擁有一個純虛方法run。要建立線程,必須特化Thread類,並實現run方法。 1.2 其成員函數
Time of Update: 2018-12-04
1. 訊息序列化 將具有一定結構的資料轉換成可以存取或者可以傳輸的形式,比如轉換成字元流的形式(char *)。通過序列化後,訊息可以在系統各邏輯模組或者網路中傳輸。 2.訊息還原序列化 顧名思義,還原序列化與序列化的過程相反。例如,將網路中傳過來的放在緩衝區的位元組流資料(char *)解碼成具有一定含義和結構的資料,然後便可以對接出來的資料進行處理。 3.執行個體 3.1) 序列化 3.2) 還原序列化 與上面過程相反。
Time of Update: 2018-12-03
這個問題來自社區提問,代碼保留一份用來以後回答using System;using System.ComponentModel;using System.Windows.Forms;namespace WindowsApplication4...{ /**//// <summary> /// gui 類 /// </summary> public partial class Form1 : Form ...{ public Fo
Time of Update: 2018-12-04
剛大四,還在忙著找工作,讀過的書不是很多,還有一些好書在讀,還有一些書將來必讀。《C語言程式設計》譚浩強版本這個版本一致被人說誤導子弟,當然還有很多人推崇。我覺得這本書不是什麼好書,但是絕對是一個入門經典,淺顯易懂,是一個菜鳥的入門書。書中沒有涉及C語言的重點痛點,都是很基礎的東西。不過很多都是很容易懂,像指標,譚老師講的很好明白。雖然指標博大精深,但是入門級的譚老師講的不錯,就基礎來說,國內無出其右啊。不過你要想學好C語言,這完全是不夠的。這本書只是告訴你,c是什麼東西,還有一些入門的編程。《
Time of Update: 2018-12-04
本文章於2010-04-24
Time of Update: 2018-12-04
P5: Line -1: 每一個non-inline member function 只會誕生一個函數實體. 至於每一個"擁有零個或一個定義"的 inline function 則會在其每一個使用者(模組)身上產生一個函數實體.這句話不太理解, 難道inline function 會放在對象所儲存的記憶體空間中?我已經測試過了,帶不帶inline function的對象大小都是一樣的. 需要弄清楚這句話到底表達什麼樣的意思.P32: Line 8:現在, 請看這種情況:Bear
Time of Update: 2018-12-04
c++ 操作符重載 /* file = main.cpp 涉及操作符重載,友元函數,重載類型轉換*/#include <iostream>#include "testClass.h"using namespace std;int main(){ testClass tc1(2); testClass tc2(3); testClass tc3 = 1 + tc1 + tc2 + 4;// 重載加法 testClass tc4 = 5 - tc2 - tc1
Time of Update: 2018-12-04
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER proc [dbo].[gb] @table_namevarchar(8) AS declare @sql Nvarchar(1000) set @sql='update ' + @table_name +' setid='+'123456 '+' where id='+'123'--set @sql='update ' + ' aa '+'setid='+'123456 '+ ' where
Time of Update: 2018-12-04
stdarg.h中定義處理可變參數函數的方法。我們常用的printf,scanf等函數,都是以此做處理的,平時寫代碼的時候很少使用到,但是學習多一種方法,明白更多使用方法。其實變參數的實現是通過編譯時間參數壓入棧的位置去尋找的。而正確處理需要給出對應的結構類型,因為需要根據結構大小取資料值。明白了這個原理,理解並寫處理不定參數的函數並不難。Variable arguments handlingThis header defines macros to access the
Time of Update: 2018-12-04
解決外部符號錯誤:_main,_WinMain@16,__beginthreadex在建立MFC項目時, 不使用MFC AppWizard嚮導, 如果沒有設定好項目參數, 就會在編譯時間產生很多串連錯誤, 如error LNK2001錯誤, 典型的錯誤提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj) : error LNK2001: unresolv
Time of Update: 2018-12-04
在C/C++大型項目中,錯誤管理在項目中起著舉足輕重的作用,以我自己的項目經驗以及觀摩其他項目,錯誤管理對項目架構以及開發效率有著很大的影響。對於錯誤管理的認識大致分為三類:剛剛開始寫程式的新手,滿篇程式看不到一處關於返回出錯的處理,更不用說出錯管理了。說明他沒認識到出錯管理的重要性程式中到處都能看到關於出錯的處理。認識到了錯誤,但是處理方式欠缺程式中幾乎不會很明顯的看到關於錯誤的處理。這是錯誤管理的最高境界。
Time of Update: 2018-12-04
C++做久了,經常用C++的方式去思考問題,有時候就突然發現自己不太會寫C程式了。寫程式的時候,難免會用到第三方外掛程式或者是庫,而這些外掛程式或者庫很多時候都不能完全滿足我們的需求,遇到這種情況,如果全是C++,那好辦,寫個適配器就OK了,關於適配器模式參考我的部落格《C++ Adaptor 設計模式》 如果要提供給C程式使用,那就需要自己封裝C程式可以使用的庫。前幾天在CSDN
Time of Update: 2018-12-04
./depcomp: line 512: exec: g++: not found make[2]: *** [my_new.o] 錯誤 127 make[2]: Leaving directory `/usr/local/setup/mysql-5.1.68b/mysys' make[1]: *** [all-recursive] 錯誤 1 make[1]: Leaving directory `/usr/local/setup/mysql-5.1.68b' make: *** [all]
Time of Update: 2018-12-04
一、運算子的優先順序表C 語言的符號眾多,由這些符號又組合成了各種各樣的運算子。既然是運算子就一定有其特定的優先順序,下表就是C 語言運算子的優先順序表:註:同一優先順序的運算子,運算次序由結合方向所決定。上表不容易記住。其實也用不著死記,用得多,看得多自然就記得了。也有人說不用記這些東西,只要記住乘除法的優先順序比加減法高就行了,別的地方一律加上括弧。這在你自己寫代碼的時候,確實可以,但如果是你去閱讀和理解別人的代碼呢?別人不一定都加上括弧了吧?所以,記住這個表,我個人認為還是很有必要的。二、
Time of Update: 2018-12-04
C語言的優先性和結合方向問題C語言的書籍的附錄都要說一個問題,就是優先性和結合方向。 我的理解是這些是建立在運算式的基礎之上的,寫一個c語言的運算式或者看一個C語言的運算式,先看優先性,在優先性相同的情況下,再根據結合方向,判斷運算式的那個部分先運算,那個後運算。如: 1. a=b=c=0,只有一個=,因此優先性相同,因此看結合方向,結合方向是從右至左,因此,整個表達是從右開始計算,上面等價與a=(b=(c=0)),這是正確地,但是下面這個問題該怎麼解釋哪? 2. a=*p+