Time of Update: 2017-02-27
C#和Java都提供了一種機制讓一個類不能被繼承,如C#中的sealed關鍵字和Java的final關鍵字,然而C++程式員就沒這麼好命了。不過C++也可以類比出這種效果,原理基於:子類的建構函式會自動調用父類的建構函式,同理解構函式也是一樣。如果父類的建構函式和解構函式被設為私人的話,那麼子類就無法調用,也就達到了父類不可被繼承的目的了。原理很簡單,按此原理我也實作出一個自認為很實用的工具類,在此獻下醜,歡迎大家批評:template< typename TDerive,
Time of Update: 2017-02-27
虛函數的類的物件版面配置(1)如果類中存在虛函數時,情況會怎樣呢?我們知道當一個類中有虛函數時,編譯器會為該類產生一個虛函數表,並在它的每一個對象中插入一個指向該虛函數表的指標,通常這個指標是插在對象的起始位置。所謂的虛函數表實際就是一個指標數組,其中的指標指向真正的函數起始地址。我們來驗證一下,定義一個無成員變數的類C040,內含一個虛函數。struct C040{ virtual void foo() {}};運行如下代碼列印它的大小及對象中的內容。PRINT_SIZE_DETAIL(C04
Time of Update: 2017-02-27
前言本文通過觀察對象的記憶體布局,跟蹤函數調用的彙編代碼。分析了C++對象記憶體的布局情況,虛函數的執行方式,以及虛繼承,等等。寫這篇文章源於我在論壇上看到的一個貼子。有人問VC使用了哪種方式來實現虛繼承。當時我寫了一點代碼想驗證一下,結果發現情況比我想象的要複雜。所以我就乾脆認真把相關的問題都過了一遍,並記錄成本文。我對於C++物件模型的知識主要來自於Lippman的書《Inside the C++ Object
Time of Update: 2017-02-27
在C++中,類的拷貝主要是通過拷貝建構函式和賦值函數,再者就是為拷貝專門實現的成員方法。由於拷貝建構函式和賦值函數在使用者為提供的情況下是由C++編譯器自動產生的,而且是public成員,因此預設的C++類都有拷貝功能。若讓一個C++類不能被拷貝,可顯式地聲明類的拷貝建構函式和賦值函數為私人函數,從而達到該類不可被拷貝的目的。下面簡單地提供一個基類,任何需要提供不可被拷貝功能的C++類只需從此類派生即可。/** 通過私人化拷貝建構函式和賦值函數而達到對象不可被拷貝的目的*
Time of Update: 2017-02-27
Windows
Time of Update: 2017-02-27
using system; using system.Collections.Generic; using system.ComponentModel; using system.Data; using system.Drawing; using system.Text; using system.windows.Forms; using system.Management; namespace Ex18_11 { public
Time of Update: 2017-02-27
using system; using system.Collections.Generic; using system.ComponentModel; using system.Data; using system.Drawing; using system.Text; using system.windows.Forms; using system.IO; using
Time of Update: 2017-02-27
using System;using System.Runtime.InteropServices;using System.Threading;class TestClass{ static void Main(string[] args) { new TestClass(); } [DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern
Time of Update: 2017-02-27
最近搞一個自動運行系統,需要實現大量的隨機方法,其中就有隨機排序List。我記得在JDK裡面的List有個 Collections.shuffle(list) 方法,可以直接進行列表亂序,結果在C#裡面卻沒有發現相關的方法,很是頭疼。看了網上介紹的一些方法發現在效率上都很差,然後查看了一下MSDN,想起List還有個Insert方法,嘿嘿,靈機一動,搞出一個非常簡單的東西,代碼如下:程式碼Random random = new Random();List<Content>
Time of Update: 2017-02-27
public string getSpell(string cn) { byte[] arrCN = Encoding.Default.GetBytes(cn); if (arrCN.Length > 1) { if (cn.CompareTo("吖") < 0) { return cn; } else if
Time of Update: 2017-02-27
碰到一個項目,需要對指定的網頁進行截圖儲存,暈死!需求永遠都是怪異的.....解決是關鍵~遂寫了以下代碼,快准狠!(因為趕時間!)可以實現對指定的頁面擷取,按指定的大小產生縮圖,當然也可以1:1的產生圖,頁面上的javascript 運行對截圖貌似沒任何影響,相當的正常,我個人都覺得很神奇。首先對項目添加系統引用System.Drawing;System.Drawing.Design;System.Windows.Forms;擷取指定網頁並轉換成圖片的類:using System;using
Time of Update: 2017-02-27
路由器名字 路由器子網路遮罩 路由器網路地址 r1 255.255.252.0 130.50.15.0
Time of Update: 2017-02-27
回溯法也稱為試探法,該方法首先暫時放棄關於問題規模大小的限制,並將問題的候選解按某種順序逐一枚舉和檢驗。在回溯法中,放棄當前候選解,尋找下一個候選解的過程稱為回溯。本執行個體是用回溯法輸出n個自然數中以r個數全排列。代碼如下:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />public void Arrange(int n, int r) int i =
Time of Update: 2017-02-27
在今天,各大媒體都時興通過簡訊參與活動並中獎的行為,中獎號碼大多用‘*’好掩蓋其手機號碼的中間幾位如:138*****345,今天,我們做的就是用一個類庫來實現這個通用功能,以便在網站和程式中引用。本文:下面,我們就開始吧,首先,用vs2005建立一個c#類庫,我們命名為NumMask,把他的Class1改名為容易記憶的其他名字,我改稱Masker,然後我們添加如下代碼:NumMaskusing System;using
Time of Update: 2017-02-27
有時候我們要對時間進行轉換,達到不同的顯示效果預設格式為:2005-6-6 14:33:34如果要換成成200506,06-2005,2005-6-6或更多的該怎麼辦呢我們要用到:DateTime.ToString的方法(String, IFormatProvider)using System;using System.Globalization;String format="D";DateTime date=DataTime,Now;Response.Write(date.
Time of Update: 2017-02-27
http我想大家和我一樣僅知道握手協議的居多,當需要用到互動檢測的時候就鬱悶了。1HttpWebRequest mHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);2 HttpWebResponse mHttpWebResponse =
Time of Update: 2017-02-27
在解決方案中增加一視窗選擇xml檔案,並將名稱改為app.config.其內容設定如下:<?xml version="1.0" encoding="utf-8"?><configuration> <appSettings> <add key="source" value="Server=localhost;uid=sa;pwd='fang';database=khgx;"
Time of Update: 2017-02-27
保證相等元素的原始位置的排序被稱為是穩固的。一個非穩固排序(unstable sort)不保證相等的元素在排序之後還會保持原來的順序。.NET使用的排序方法是不穩固的。這些排序方法,包括 System.Array.Sort 和
Time of Update: 2017-02-27
前幾篇我已經向大家介紹了如何使用GDI+來繪圖,並做了一個截圖的執行個體,這篇我向大家介紹下如何來做一個類似windows畫圖的工具.個人認為如果想做一個功能強大的繪圖工具,那麼單純掌握GDI還遠遠不夠,我的目前也只能做一個比較簡單的繪圖工具了.不足之處,歡迎大家討論!先來看一下最終效果吧:主要實現功能:畫直線,矩形,橡皮,圓形,切換顏色,開啟圖片,儲存圖片,清除圖片,手動調節畫布大小;軟體剛啟動時,為一張空白畫布,我們可以直接在畫布上繪畫,也可以通過菜單中的“開啟”,匯
Time of Update: 2017-02-27
感謝大家的支援,這幾天從早忙到晚,一個字累呀!!!現在挺困的,但是又不習慣這麼早睡覺,哎~~還是利用這個時間繼續來寫第三篇吧.前兩篇已經基本向大家介紹了繪圖的基本知識.那麼,我就用我們上兩篇所學的,做幾個例子.我們先來做一個簡單的----仿QQ截圖,關於這個的例子其實網上已經有這方面的資料了,但是為了文章的完整性,還是覺得有必要講解.我們先來看一下效果:(圖1)(圖2)