Time of Update: 2018-12-03
當把一個衍生類別對象賦給一個基類對象時,會發生對象切割。(另外用基類對象強制轉換衍生類別對象也會)對象切割會發生什麼呢?#include <iostream>using namespace std;class CShape{public:CShape (){m_color=0;}~CShape(){}virtual void draw(){cout<<"This is a
Time of Update: 2018-12-03
#include <iostream>class MyClass{public: MyClass(){std::cout << "Hello MyClass!" << std::endl;}public: void MyMethod(){std::cout << "Hello MyMethod!" << std::endl;}}; 如果這樣定義對象:MyClass obj;
Time of Update: 2018-12-03
1.不用局部變數和全域變數實現strlen庫函數 一般用有變數的實現方法是:(1)、不管效率的簡單的實現 size_t strlen_a(const char * str) { size_t length = 0 ; while (*str++ ) ++ length; return length;}也可以稍加改進下是:size_t strlen_b(const char * str) { const char *cp = str;
Time of Update: 2018-12-03
最近由於本人對網路編程的喜愛,所以對一點關於TCP協議socket編程的總結。由於本人的能力有限,寫的可能過於簡單,只適合初學者,歡迎大牛提出寶貴的意見,本人會感激不盡的。廢話少說了,進入正題。(下面代碼是基於VC6.0) 是一般socket 編程圖。 伺服器的建立:
Time of Update: 2018-12-03
類對象的構造順序是這樣的:1.分配記憶體,調用建構函式時,隱式/顯示的初始化各資料成員 初始化階段可以是顯式的或隱式的,取決於是否存在成員初始化表。隱式初始化階段按照聲明的順序依次調用所有基類的預設建構函式,然後是所有成員類對象的預設建構函式。2.進入建構函式後在建構函式中執行一般計算 計算階段由建構函式體內的所有語句構成。在計算階段中,資料成員的設定被認為是賦值,而不是初始化。使用初始化列表有兩個原因:1.必須這樣做:
Time of Update: 2018-12-03
C函數要在程式中用到以下這些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va_list:用來儲存宏va_start、va_arg和va_end所需資訊的一種類型。為了訪問變長參數列表中的參數,必須聲明 va_list類型的一個對象 定義: typedef
Time of Update: 2018-12-03
在看kvm原始碼的過程中遇到了長度為0的數組的定義,不明白其含義,所以上網查了一下,覺的講得很好:http://blog.163.com/hancker_31/blog/static/355873612011412104355537/在標準C和C++中,長度為0的數組是被禁止使用的。不過在GNU
Time of Update: 2018-12-03
最近要對linux核心進行修改,要對某個函數進行計時。一時間竟然忘了計時函數的名字,所以寫了這個小短文,提醒自己。#include<stdio.h>#include<time.h>#include<sys/time.h>#include<string.h>#include<stdlib.h>int main(void){ struct timeval starttime,endtime; double
Time of Update: 2018-12-03
指標的一些常用定義做一個總結:int f; 一個整型變數int *f; 一個指向整型的指標。int const *f ;f是一個指向整數常量的指標,可以修改指標的值,但不能修改它所指向的值。int * const f; f為指向整型的常量指標,指標是常量,它的值無法修改,但是可以修改它所指向的值。int const * const f;無論指標本身還是它所指向的值都是常量,不允許修改。int *f(); 可以把*f()看過是一個運算式,其實就是int (*f()).把(*f())當做一個整體。
Time of Update: 2018-12-03
C的記憶體管理有1)變數管理。除了全域變數和靜態變數(那些定義在任何函數以外的變數,一般C語言中不出現,靜態變數是有static關鍵字的變數)是在堆棧中管理的,進入函數建立這些變數,退出函數就銷毀了。2)函數調用,這個也是在堆棧中。3)用庫函數動態分配的記憶體。C庫裡的函數實際上是調用DOS 功能,調用介面是int 21H,功能號放在AX裡。功能號我記不清了。具體參見相關技術指南。對於1)和2),舉個例子:fu(int j){ int i;}如果調用fu(2),那麼彙編代碼大概是push
Time of Update: 2018-12-03
1. 把c++當成一門新的語言學習(和c沒啥關係!真的。); 2. 看《thinking in c++》,不要看《c++變成死相》; 3. 看《the c++ programming language》和《inside the c++ object model》,不要因為他們很難而我們自己是初學者所以就不看; 4. 不要被vc、bcb、bc、mc、tc等詞彙所迷惑——他們都是整合式開發環境,而我們要學的是一門語言; 5.
Time of Update: 2018-12-03
一. Array-數組 在C#中定義一個數組的方法一般為: Data Type [] Array=new DataType [Size]; 其中Data Type可以是基礎資料型別 (Elementary Data Type)和物件類型資料,Size是數組元素的個數. 例子定義一個int類型的資料來表示一個班上的人數 int [] classNum=new int[20]; 數組的屬性有: 屬性意義 public virtual bool
Time of Update: 2018-12-03
1. 定義const對象const 把一個對象轉換成一個常量: const int bufSize = 512;定義bufSize為常量並初始化為512. 因為常量在定義後就不能修改,所以定義時必須初始化。 2 const 引用 const int ival = 1024;const int &refVal = ival; const 引用可以綁定到不同但相關的類型的對象或綁定到右值int i=42; double dval = 3.14;const int &r
Time of Update: 2018-12-03
enable_if標頭檔: "boost/utility/enable_if.hpp"有時候,我們希望控制某個函數或類模板的特化是否可以加入到重載決議時使用的重載或特化的集合中。例如,考慮一個重載的函數,它有一個版本是帶一個int參數的普通函數,另一個版本是一個函數模板,它要求參數類型 T 具有一個名為type的巢狀型別。它們看起來可能象這樣:void some_func(int i) { std::cout << "void some_func(" << i <
Time of Update: 2018-12-03
Library 4. Operators Operators庫如何改進你程式?Operators用法Operators 總結 Operators庫如何改進你的程式?提供一組完整的比較操作符提供一組完整的算術操作符提供一組完整的迭代器操作符C++定義的操作符可以分成幾組。當你在一個類中碰到某組操作符中的一個,通常你還會碰到同組中的其它操作符。例如,如果一個類提供了 operator==, 你通常還會看到 operator!= ,或許還有 operator<, operator<=,
Time of Update: 2018-12-03
1.把C++當成一門新的語言學習2.看《Thinking In C++》,不要看《C++變成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是整合式開發環境,而我們要學的是一門語言;5.不要放過任何一個看上去很簡單的小編程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;6.會用Visual C+
Time of Update: 2018-12-03
【階段一】:《C++程式設計語言(特別版)》 The C++ Programming Language(Bjarne Stroustrup)《C++語言的設計和演化》 《The Design and Evolution of C++》《C++ Primer (3RD)中文版》《C++ Primer (4RD)中文版》《Essential C++中文版》《Accelerated C++中文版》《Thinking In
Time of Update: 2018-12-03
Operators標頭檔: "boost/operators.hpp"Operators庫由多個基類組成。每一個類產生與其名字概念相關的操作符。你可以用繼承的方式來使用它們,如果你需要一個以上的功能,則需要使用多重繼承。幸運的是,Operators中定義了一些複合的概念,在大多數情況下可以無須使用多重繼承。下面將介紹最常用的一些Operator類,包括它們所表示的概念,以及它們對衍生類別的要求。某些情況下,使用Operators時,對真實概念的要求會不同於對該概念基類的要求。例如,概念
Time of Update: 2018-12-03
序--入行程式已7年了,主要涉足Web開發。學的是java,C#;講的是javascript,css。近期突然對C++感興趣。遙想當年學C的時候,還對著老譚的那本C語言狂啃,模模糊糊記得指標啥的,大約得有8,9年了吧。到考研時本來專業課是C來著,又突然因為赴日開發斷了上研究生這條路。所以對C一直算得上是有緣無份。而對於C++,則連緣都沒有。也許興趣是最好的老師,也算為自己留條後路,學到什麼程度呢,起碼能看得懂代碼吧。本次開發目的是製作一個開發個人防火牆。在以後的日子裡,將學習C++的感悟與體會記
Time of Update: 2018-12-03
new和delete運算子用於動態分配和撤銷記憶體的運算子new用法: 1. 開闢單變數地址空間 1)new int; //開闢一個存放數組的儲存空間,返回一個指向該儲存空間的地址.int *a = new int 即為將一個int類型的地址賦值給整型指標a. 2)int *a = new int(5) 作用同上,但是同時將整數賦值為5 2. 開闢數組空間