Time of Update: 2018-12-03
第5條:一個實體應該只有一個緊湊的職責 單一職責原則。這個原則並不那麼容易執行,即使是STL這樣的程式庫,也一樣會犯違反該原則的錯誤。在這裡,舉了兩個違反這一原則的著名實現:realloc和stl 中的basic_string。不過,對於basic_string,我想比起MFC中的CString還是好了不少。在《Exceptional C++ style》中,對basic_string作了剖析,並且得出一個普遍的原則:盡量將函數實現為獨立的函數而不是成員函數。
Time of Update: 2018-12-03
將建構函式,解構函式聲明為私人和保護的,那麼對象如何建立?已經不能從外部調用建構函式了,但是對象必須被構造,應該如何解決,麻煩大家幫忙說明,關於構造,解構函式聲明為私人和保護時的用法???提出這個問題,說明你已經對c++有所思考了。從文法上來講,一個函數被聲明為protected或者private,那麼這個函數就不能從“外部”直接被調用了。對於protected的函數,子類的“內部”的其他函數可以調用之。而對於private的函數,只能被本類“內部”的其他函數說調用。文法上就是這麼規定的,你肯定
Time of Update: 2018-12-03
1 隱式轉換。 2.顯式轉換。使用顯式類型轉換時﹐有一些限制﹕例如數值類型﹐只能在數字﹐char類型﹐enum類型之間轉換 ,不能直接把bool類型轉換成其他類型。強制轉換一個對象的類型,該對象必須與該類型相compatible,即使該對象是在一個object變數裡 但Convert則不見得,它會根據當前參數裡的類型/對象,做解析(parse)或資料轉換,譬如下面能成功 int i = Convert.ToInt32("123");
Time of Update: 2018-12-03
C#編程有幾個簡單規則,如果能夠遵守,可以使程式看起來井然~~~ 1.命名 和vb不一樣,在C#中,是否大小寫敏感的(case sensitive) 。用C#編寫的程式集(DLL)可能在VB.NET中調用(體現編程語言的互通性),如果僅使用大小寫區分不同的名稱,就必須使得其中一個名稱不能為外部訪問: 所有,在許多情況下,命名均採用Pascal命名方式(所有單詞首字母大寫);但是在以下三中情況下,使用Camel命名形式(第一個單詞首字母小寫,其他的大寫):
Time of Update: 2018-12-03
比如在一個項目中,有大量的資料結構,他們都是雙向鏈表,但又想共用一套對鏈表的操作演算法,這怎麼做到呢,C中又沒有C++中的繼承,不然我可以繼承一父(類中只有兩個指標,一個向前一個向後),而其演算法可以寫在你類中的虛函數中,供子類使用。如:class Links{public: Links* back; Links* forword; virtual Add(){ ... }; virtual Del(){ ... }; virtual Ins(){ ... };
Time of Update: 2018-12-03
一般的多態是單重指派,即一個基類指標(或引用)直接到綁定到某一個子類對象上去,以獲得多態行為。在前面“多態化的建構函式和非成員函數”介紹中,非成員函數函數operator<<實現了單重指派,它只有一個多態型的參數,即基類引用NLComponent&,通過在繼承體系中定義一個統一的虛函數介面print來完成實際的功能,然後讓operator<<的NLComponent&引用直接調用它即可,就可以自動地指派到某一個子類的print上去。
Time of Update: 2018-12-03
在C++中,利用C++編譯器在實現虛函數調用時的某些伎倆,我們可以在類外直接調用到類的私人成員函數!!代碼如下,代碼中有詳細的說明。//hacker.cpp: C++語言的駭客行為#include <iostream>class Coo{private: int d; //特意將d放在最前面,但實際上Coo類的對象記憶體中 //在d前面還有一個指向vtable數組的指標變數
Time of Update: 2018-12-03
我們知道數組時儲存的是一系列的相關資料類型的資料,提供了強大的索引方式來獲得它的值:通過數組名,索引下標來索引在C#中同樣實現了和其他語言沒有的強大的索引功能,C#通過索引實現對類的自己的本身的成員的訪問下面看一個執行個體第一:我定義了一個User類:包括欄位,屬性,方法 class User { private string name; private string password; public string Name {
Time of Update: 2018-12-03
我們知道泛型可以儲存一個類類型的父類,因此就可以加進他的子類。這是怎麼回事,有很多人就會產生疑問。原則上是子類對象是可以賦值給父類對象的,即子類可以完全替換父類出現的地方,但是反過來父類對象不是替換子類對象的。我們把這種特性叫做裡氏替換原則(LSP).裡氏替換原則有兩個關鍵字:is和as1.is是用來檢測對象是否與給定物件類型的相容,英文意思是“是”的意思,using System;using System.Collections.Generic;using System.Linq;using
Time of Update: 2018-12-03
.c檔案下用return (*env)->NewStringUTF(env, "Hello Baina!Guang Li is coming!");.cpp檔案下用env->NewStringUTF(const char* bytes);Java通過JNI機制調用c/c++寫的native程式。c/c++開發的native程式需要遵循一定的JNI規範,下面的例子就是一個JNI函式宣告:JNIEXPORT jint JNICALL Java_jnitest_MyTest_test (
Time of Update: 2018-12-03
引子:今天上課老師出了一道C語言數組越界的題目,雖然不難,但牽扯到記憶體配置和數組越界的相關知識,感覺自己真是孤陋寡聞啊,還以為都沒辦法運行呢。。回來試了一下,還正好遇到了點問題,下面總結一下~ PS:用codeblocks木有找到看記憶體的地方額。。。只能printf出來了。。。代碼:#include <stdio.h>main(){ int v1; int a[3]; int v2; int i; v1 = 10; v2 = 20;
Time of Update: 2018-12-03
曾經做過一個Windows Form,需要在TreeView空間中實現拖拽的功能,首先我想介紹一下WindowsForm中的TreeView控制項:使用 Windows 表單 TreeView 控制項,可以為使用者顯示節點階層,就像在 Windows作業系統的 Windows資源管理員功能的左窗格中顯示檔案和檔案夾一樣。樹視圖中的各個節點可能包含其他節點,稱為“子節點”。可以按展開或摺疊的方式顯示父節點或包含子節點的節點。通過將樹視圖的 CheckBoxes 屬性設定為
Time of Update: 2018-12-03
http://blog.csdn.net/asingna/archive/2008/12/10/3488874.aspxC# 類型 .NET Framework 類型 bool System.Boolean byte System.Byte sbyte System.SByte char System.Char decimal System.Decimal double System.Double float System.Single int System.
Time of Update: 2018-12-03
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using
Time of Update: 2018-12-03
示範程式碼開發的資源 介紹:縱觀當今的監控系統的發展趨勢,能很容易發現基於IP的解決方案正在迅速的普及。有許多的製造商,提供廣泛的IP視頻射像和視頻伺服器,意味著個人的IP射像監控系統正在普及。更進一步,許多公司提供將CCTV視頻監控制系統轉換成基於IP的系統的解決方案,鞏固現有的裝置和構造。對於這些公司提供的不僅是硬體裝置,還有軟體,有許多其它公司針對於IP視頻監控系統的軟體開發,為小型企業提供完整的解決方案,同時也對個人提供這類服務。在這裡,我將分享一些關於我用各種IP射像頭和視頻伺服器進行
Time of Update: 2018-12-03
介紹:GIS(Geographical Information System) 是一種通過電腦系統實現地圖顯示的系統。可以讓使用者進入,顯示並分析地理資料。由於大多數人不瞭解GIS,所以經常在IT市場上有幾家大企業壟斷該行業比如Intergraph, Bentley, MapInfo, Autodesk 和 ESRI,如今全球IT壟斷企業微軟,Google 和 Oracle 正在競爭建立一個虛擬地球的系統項目,Google Earth和Oracle
Time of Update: 2018-12-03
C++轉型操作符 C++通過引進四個新的類型轉換操作符克服了C風格類型轉換的缺點,這四個操作符是: const_cast<T>( expression ) dynamic_cast<T>( expression ) static_cast<T>( expression ) reinterpret_cast<T>( expression ) 在大多數情況下,對於這些操作符你只需要知道原來你習慣於這樣寫:(type)
Time of Update: 2018-12-03
#include <stdio.h>#include <stdarg.h>//這個標頭檔是為變參數服務的//未使用stdarg.h版本的可變參數函數---求和//首參數i表示除了第一個參數外, 剩下的參數的總個數, 首參數不參加求和long sum(int i, ...){//指標p指向第二個參數的地址int *p, j;long s = 0;p = &i+1;for (j=0;j<i;j++)s += p[j];return
Time of Update: 2018-12-03
C語言位操作--底層開發程式猿得好好收藏 在電腦程式中,資料的位是可以操作的最小資料單位,理論上可以用“位元運算”來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做資料變換使用,但是,靈活的位操作可以有效地提高程式啟動並執行效率。C語言提供了位元運算的功能, 這使得C語言也能像組合語言一樣用來編寫系統程式。特別是在通訊及底層開發過程中,不可避免的接觸到一些與位操作的問題,好好牢記這些知識,可以讓你更好的理解這些代碼。 位元運算符C語言提供了六種位元運算符: & 按位與 |
Time of Update: 2018-12-03
1,typedef不必要?a,typedef提供了一層間接,物件導向語言中,介面掩蓋了運行時不同具體類型間的差別,而typedef掩蓋了編譯時間不同類型間的差別,卻又不喪失型別安全b,一般語言只能返回“值”,而typedef提供了返回“類型”的能力,這是模板元編程不可或缺的機制,除非模板元編程眼下也是不必要的2,匯入在不同地點分別對#include,private成員放在標頭檔中,inline函數也放在標頭檔中進行了批判,實際上原因只有一個:C++不是平台,它沒有二進位標準,它編譯後成為本地代碼