Time of Update: 2018-12-04
C++ 引入了 const_cast,reinterpret_cast 之類的新的顯式類型轉換方式,不僅大多數 C程式員覺得不是很習慣,就連某些有經驗的C++程式員都會在一些細節上犯錯。誠然,既然我們可以簡單的寫出:int i = (int)p;// p is apointer這樣的顯式轉換,為什麼還要使用int i =reinterpret_cast<int>( p );這麼複雜的形式呢?這篇文章的目的是簡單介紹C++ 的類型轉換系統,並對使用和擴充進行一些討論。C++ 引入了
Time of Update: 2018-12-04
虛函數是C++中用於多態的機制。核心理念就是通過基類訪問衍生類別定義的函數。基類的析構含糊都必須是virtual的虛函數只能藉助於指標或者引用來達到多態的效果。前提B類繼承與A類 且foo()為虛函數void bar(A *a){ a->foo();//被調用的是A::foo()還是B::foo()
Time of Update: 2018-12-04
#include <iostream>#include <stdio.h>#include <time.h>using namespace std;int main (){time_t rawtime;struct tm * timeinfo;time(&rawtime);timeinfo = localtime(&rawtime);//printf("\007The current date/time is: %s",
Time of Update: 2018-12-04
第四部分:物件導向編程與泛型程式設計。第15章:物件導向編程。1.物件導向3個基本概念:封裝,繼承,多態。2.c++中,通過基類的引用或指標調用虛函數時,發生動態綁定。(多態的實現)3.virtual只能在類內部聲明中出現,不能用在類定義體外部出現。同static修飾符一樣。4.注意析構也要是虛函數哦。5.public成員可以被類外部使用者使用,類成員和友元即可以訪問public成員,也可以訪問private.,protected可以被繼承的子類訪問。6.衍生類別可以進一步限制,但是不能放鬆所繼
Time of Update: 2018-12-04
readfile.seekg(-3*sizeof(person),ios_base::cur);===>readfile.seekg(-3*(off_t)sizeof(person),ios_base::cur);sizeof()返回的size_t是無符號的,而off_t是有符號的 f.seekg(-3*sizeof(s),ios::cur);
Time of Update: 2018-12-04
1. 類1中引用了類2中定義的某個枚舉、結構體或者他們的類型,那麼,也會去掉類2的建構函式來造出這些個類型變數滴。 不知道這樣做有沒有什麼壞處和好處?大家知道嗎?告訴我也好哦。比如:#include "Clas2.h"class Clas1{public: Clas1(Clas2::Enum_Model model) : mode(model) =>注意:就是這裡,他會去調用Clas2的建構函式。(有誰能說明白嗎?給個解釋的理由哈哈) {
Time of Update: 2018-12-04
在C#中定義了關鍵字sealed,被sealed修飾的類不能被繼承。在Java中同樣也有關鍵字final表示一個類型不能被繼承。在C++中沒有類似於sealed和final的關鍵字,所以我們只有自己來實現。
Time of Update: 2018-12-04
* . RCacheManage::Struct_Msg structmsg; structmsg = *(Struct_Msg*)buf;注意啦,如果結構體裡面存在指標類型的東東,這樣賦值就好像在有指標成員的類中進行 淺拷貝一樣,那麼就不能成功。 因此 ,要解決這個問題,我們需要把結構體中的每個成員變數來一一的賦值:如:
Time of Update: 2018-12-04
作業: 1)請用指標類型,參考型別來實現一個值的交換函數 Swap(string* a,string* b) Swap(string& a,string& b) 2)請設計一個函數把兩個字串參數串連成一個新的大字串,並返回給調用者,最終顯示出大字串: Int main() { string a=”神馬”,b=”是浮雲!”; cout<<stringCat(a,b)<<endl; //神馬是浮雲! }作業1:寫一個類:學生考卷答題這麼個類
Time of Update: 2018-12-04
#include <stdio.h> #include <time.h> int main () { time_t rawtime; struct tm * timeinfo; int year, month ,day; char * weekday[] = { "Sunday ", "Monday ",
Time of Update: 2018-12-04
一。<math.h>1. abs() 絕對值函數2. 注意,在unix/linux下gcc編譯有math.h標頭檔的程式的時候,我們需要 gcc abc.c -lm ===> link -lm 表示math庫。3. floor() ceil() 取當前值的前(下)後(上)整數;例如:15.5 floor() => 15 ceil() => 16 4. div() 求兩個整數相除的商和餘數; div_t div(int number, int
Time of Update: 2018-12-04
簡單的C語言實現,用戶端通過TCP協議向伺服器端請求傳輸的檔案,伺服器端收到請求後向用戶端傳送檔案。 伺服器程式和用戶端程式應當分別運行在兩台電腦上。在運行伺服器端的電腦終端執行:./file_server在運行用戶端的計算終端上執行:./file_client ipaddr_server然後根據提示輸入要傳輸的伺服器上的檔案,該檔案必須在伺服器的當前運行目錄中,否則會提示找不到檔案。 直接上源碼吧: /////////////////////////////////////////////
Time of Update: 2018-12-04
C++中map容器提供一個索引值對容器,map與multimap差別僅僅在於multiple允許一個鍵對應多個值。 一、map的說明 1 標頭檔 #include <map> 2 定義 map<string, int> my_Map; 或者是typedef map<string, int> MY_MAP; MY_MAP my_Map; 3 插入資料 (1) my_Ma
Time of Update: 2018-12-04
const定義的常量在函數執行之後其空間會被釋放,而static定義的靜態常量在函數執行後不會被釋放其空間。static
Time of Update: 2018-12-04
你是否想過為什麼有時候main()函數是入口地址,在win32中winmain()函數又是入口地址,其實是編譯器在動態連結到crt[C runtime library(part of the C standard library)]時候設定的程式設定斷點,我們來看crtexe.c代碼第一個static int __cdecl pre_c_init(void)* The code in mainCRTStartup that was executed before executing
Time of Update: 2018-12-04
goto只能在函數體內跳轉,不能跳到函數體外的函數。即goto有局部範圍,需要在同一個棧內。需要在要跳轉到的程式段起始點加上標號。如下例中的part2。1.goto 語句可用於跳出深嵌套迴圈#include<iostream>using namespace std;int main(){for(int i=0;i<10;i++) for(int j=0;j<10;j++) for(int k=0;k<10;k++) {
Time of Update: 2018-12-04
在文章開始之前,首先指出對於c++新手的兩個常見的誤解: 一、任何class如果沒有定義default constructor,就會被合成出一個來。 二、編譯器合成出來的default constructor會明確設定'“class內每一個data member的預設值” 首先我們來討論第一個誤解。編譯器並不是給任何一個沒有user-declared constructor的class合成出default constructor,編譯器只會在需要的時候才會給沒有user-
Time of Update: 2018-12-04
程式一般分為Debug 版本和Release 版本,Debug 版本用於內部調試,Release 版本發行給使用者使用。斷言assert 是僅在Debug 版本起作用的宏,它用於檢查“不應該”發生的情況。樣本6-5 是一個記憶體複製函數。在運行過程中,如果assert 的參數為假,那麼程式就會中止(一般地還會出現提示對話,說明在什麼地方引發了assert)。void *memcpy(void *pvTo, const void *pvFrom, size_t size){ assert((
Time of Update: 2018-12-04
1、枚舉enum的用途淺例 寫程式時,我們常常需要為某個對象關聯一組可選alternative屬性.例如,學生的成績分A,B,C,D等,天氣分sunny, cloudy, rainy等等。 更常見的,開啟一個檔案可能有三種狀態:input, output和append. 典型做法是,對應定義3個常數,即: const int input = 1; const int output = 2; const int append =
Time of Update: 2018-12-04
關於強制類型轉換的問題,很多書都討論過,寫的最詳細的是C++ 之父的《C++ 的設計和演化》。最好的解決方案就是不要使用C風格的強制類型轉換,而是使用標準C++的類型轉換符:static_cast, dynamic_cast。標準C++中有四個類型轉換符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面對它們一一進行介紹。static_cast用法:static_cast < type-id > (