Time of Update: 2018-12-03
在《高品質編程指南_林銳》的第九章開頭部分有一段話, "預設的拷貝建構函式 和 預設的賦值函數 均採用 '位拷貝' 而非 '值拷貝' 的方式實現, 倘若類中含有指標變數, 這兩個函數註定將出錯 " 其中吸引我眼球的是 "位拷貝" 這個字眼, E文好像是 "bitwise copy", 全稱"逐位拷貝". 沒看過E文原版的, 這些是網上看到的. 說實話, 拋出一個概念性的東西, 而沒有作一定的解釋,
Time of Update: 2018-12-03
C++程式設計語言中,有一種專門應對類型定義的用法,叫做C++ typedef。那麼我們應該如何正確理解這一應用呢?在這篇文章中,我們會通過C++ typedef不同使用方法來對這一應用進行詳細介紹。C++ typedef,顧名思義,為“類型定義”,可以解釋為:將一種資料類型定義為某一個標識符,在程式中使用該標識符來實現相應資料類型變數的定義。例如:typedef unsigned int UINT; int main (int argc, char *argv[]) {
Time of Update: 2018-12-03
輸入輸出資料流在<iostream>中定義,並且在這個標頭檔中還聲明了標準控制台輸出資料流cout包含控制符的標頭檔:標準標頭檔<ios> 和 <iomanip> 輸出資料流:boolalpha 和 noboolalpha:
Time of Update: 2018-12-03
一直在看《C++ Primer 第四版》和 《C++ 程式設計教程》 (錢能 主編)在《C++ Primer 第四版》的 4.2.4節 , 《C++ 程式設計教程》8.3節 都有講關於 指標和數組 的知識。 我把前者稱為 A, 後者稱為 B吧。 A 的東西是比較全的, 相對於B。 不過B 的東西直擊重點, 並且例子舉的好。 1. 在運算式中使用數組名時, 該名字會自動轉換為指向數組第一個元素的指標(B中是第一個元素地址, 個人覺得指標更貼切, 指標做加減法很正常嘛).
Time of Update: 2018-12-03
.keywordlink{ background: #666; }-->cctype (ctype.h)<C++ Primer 第四版> 3.2.4 節 string 對象中字元的處理<C++ Primer Plus 第五版> 6.3 節 字元函數庫 cctype(比前者多個isblank介紹, 比較詳細)headerCharacter handling functionsThis header declares a set of functions to
Time of Update: 2018-12-03
#include <iostream>using std::cout;using std::endl;typedef int (*pf)(int i);int f2(int i){ return i;}int f3(int i){ return 2*i;}pf f(bool b) //第一種聲明方式//int (*f(bool b))(int i) //第二種聲明方式 { return (b?f2:f3);}int main(){ pf p =
Time of Update: 2018-12-03
載自《C++ Primer 第四版》12.4.3節 3. 使用預設建構函式 初級 C++ 程式員常犯的一個錯誤是, 採用以下方式聲明一個用預設建構函式初始化的對象: //oops! declares a function , not an object Sales_item myObj(); 編譯 myObj 的聲明沒有問題. 然而, 當我們試圖使用 myObj 時 Sales_item myObj(); //OK: but defines
Time of Update: 2018-12-03
#include <iostream>#include <cmath> /* 作者: lin49940 日期: 2010.4.28*/int sign(int x){ int a[3] = {-1, 1, 0}; return a[(x + 2)/(abs(x)+1)]; //+1 是為了避免除0的情況}int main(){ using namespace std; cout << sign(19) <
Time of Update: 2018-12-03
C風格字串:對字串進行操作的 C 函數定義在標頭檔<cstring>中; 1. 字串定義:char* result; 2. 字串的最後一個字元是null字元('/0'),可以通過這個字元確定字串的結尾。 3. strlen()返回的是字串的大小;因此,分配空間的時候,需要比字串的實際空間大1. e.g. char* copyString(const char* inString) { char
Time of Update: 2018-12-03
#include <iostream>using namespace std;class C{ public: C(){cout << "chuangjiang C" << endl;} C(const C &other){cout << "coping C" << endl;} C & operator = (const C
Time of Update: 2018-12-03
#include <iostream>#include <ctime>#include <cstdlib>using namespace std;//顯示所有球 inline void show(const int ball[], int len){ for(int i = 0; i < len; ++i){ cout << ball[i] << " "; } cout <<
Time of Update: 2018-12-03
#include <iostream>using namespace std;//反序字串chs到字串rchs. //參數:chs[]原字串, rchs[]目的字串, len 長度 inline void reverse(const char chs[], char rchs[], int len){ int rindex = len; for(int i=0; i < len; ++i){ rchs[--rindex] = chs[i]; }
Time of Update: 2018-12-03
#include <iostream>#include <io.h>#include <string>/* 作者: lin49940 日期: 2010.5.1 */using namespace std;/* * 查詢指定的目錄下的檔案和檔案夾, 返回其數目, * 檔案和檔案夾資訊儲存在指標pfile 指向的_finddata_t 數組中 * 參數: dirPath 指定目錄; * 參數: pfile 指標,
Time of Update: 2018-12-03
看了 林銳 的 《高品質編程指南》8.2.2 令人迷惑的隱藏規則. (這裡的隱藏是指衍生類別的函數屏蔽了與其同名的基類函數) 這一節寫得很好: 1. 把出現隱藏的情況列舉出來了. 2. 舉的例子很貼切, 讓人能更好的理解. 3. 對出現隱藏函數情況的理解. 4. 提出對應的解決方案. 如果衍生類別的函數與基類的函數同名, 但是參數不同. 此時,
Time of Update: 2018-12-03
typedef unsigned int size_t; size_t 其實是一個無符號的int; 在對於數組的迴圈中, 貌似很有用, 因為數組的下標都是 0, 1, 2......, 不可能是負數. 下面是這個陷阱的示範: int limit = -1; for(size_t i=0; i < limit; ++i){ cout << i << endl; } 這段代碼裡面的迴圈體貌似不會被執行, 因為 0
Time of Update: 2018-12-03
出處:http://blog.csdn.net/classfactory/archive/2004/08/29/87749.aspx C++ 中的枚舉類型繼承於 C 語言。就像其他從 C 語言繼承過來的很多特性一樣,C++ 枚舉也有缺點,這其中最顯著的莫過於範圍問題——在枚舉類型中定義的常量,屬於定義枚舉的範圍,而不屬於這個枚舉類型。例如下面的樣本:enum FileAccess { Read = 0x1, Write = 0x2,};FileAccess access =
Time of Update: 2018-12-03
廢話不多說, 先看看下面的代碼! class ClassA{ private: int m_a; public: void copy(const ClassA &other) { m_a = other.m_a; } } 很多人會問了m_a 是類
Time of Update: 2018-12-03
#include <iostream>class Mytime{ private: int hours; int minutes; public: Mytime(int h = 0, int m = 0):hours(h),minutes(m){} Mytime(const Mytime
Time of Update: 2018-12-03
c++ 中, 函數的參數的傳遞方式有三種: 值傳遞, 指標傳遞和引用傳遞.1. "值傳遞" 的樣本程式. void fun1(int x){ x = x + 10; } 執行片斷: int n = 0; fun1(n); cout << "n = " << n << endl; //n = 0 總結: 由於 fun1 函數體內的 x 是外部變數 n 的一份拷貝, 改變 x 的值不會影響 n, 所以 n 的值仍然是 0。 2. "指標傳遞"
Time of Update: 2018-12-03
我一直都覺得java 的final關鍵字和 c++ 的 const關鍵字的作用比較相近, 通過對c++ 更深入的學習, 漸漸知道了他們的一些區別. 1. Java 的final 是能修飾class的, c++的 const雖然也能寫在class 前面, 但是貌似沒作用. (不是很確定) 2. c++ 對 const 修飾的類對象保護要好於 java 的 final Java: final ClassA a = new ClassA(); a = b; //