原创 explicit 隱式轉換與顯示轉換

explicit關鍵字:用於防止單參數構造函數的隱式轉換功能(多參數構造函數不會執行隱式轉換) class myDig { int value; public: explicit myDig(int n) {

原创 子函數中的內存分配(二級指針的應用)

在子函數 func 中分配一段內存空間 錯誤例子: #include <iostream> using namespace std; void func(char *p) {     printf("*p = %d, p = %d,

原创 [effectiv c++]條款5:瞭解C++默默編寫並調用哪些函數

條款5:瞭解C++默默編寫並調用哪些函數 對於一個empty class,如果你自己沒聲明,編譯器就會爲它聲明(編譯器版本的)一個copy構造函數,一個copy assignment操作符,一個析構函數,此外如果你沒有聲明任何構造

原创 [effectiv c++]條款2:儘量以const,enum,inline替換#define(static,const定義式)

1、你所使用的名稱可能並未進入記號表 如 #define ASPECT_RATIO 1.653 中的記號名稱ASPECT_RATIO可能由於預處理器的處理,而未被真實編譯器看見,於是記號名稱未能進入記號表。 解決方法:用編譯器替換

原创 c++筆記

最近重新溫習了一遍c++,把一些原本掌握不牢的語法記了下來。 引用 int n = 4; int & setValue() {return n;} int main() { setValue() = 40;//setVal

原创 一個類成員函數的局部靜態變量問題

原文:http://www.cnblogs.com/Tour/p/4080212.html?utm_source=tuicool&utm_medium=referral   當時遇到的需求需要這樣處理:調用某個類對象的某個成員函數時,第

原创 最小二乘法總結

概念 最小二乘法多項式曲線擬合,根據給定的m個點,並不要求這條曲線精確地經過這些點,而是曲線y=f(x)的近似曲線y= φ(x)。 原理 給定數據點pi(xi,yi),其中i=1,2,…,m。求近似曲線y= φ(x)。並且使得近似曲

原创 字符串賦值給指針與數組的區別

代碼 int Test() { // Test1 char str1[] = "hello world"; char str2[] = "hello world"; if (str1 == s

原创 [effectiv c++]條款39:明智而審慎地使用private繼承

class Timer { public: explicit Timer(int tickFrequency); virtual void onTick() const; …… }; class Widget :

原创 局部變量內存分配時間、靜態變量的初始化時間、常量摺疊

內存分配時間 例1 局部變量 void Test1() { ………… int buf[1024 * 1024]; ………… } 在windows下,由於棧限制爲1M,上面代碼可能會棧溢出,因此通過單步調試我們可以知

原创 動態鏈接與靜態鏈接

靜態庫 Linux下的靜態庫通常以.a爲後綴,用於創建.a的工具爲ar(archive的縮寫).靜態庫鏈接後會將所有數據會添加到調用程序, 因此使用靜態庫的程序體積可能較大,但是使用靜態庫的程序不需要外部依賴項. 舉例 以hello.cp

原创 成員函數內delete this

delete this 以下引用自:http://www.cppblog.com/lovedday/archive/2008/06/03/52060.html 成員函數調用delete this合法嗎? 只要你小心,一個對象請求自

原创 局部性原理

局部性原理 時間局部性(Temporal Locality) 如果一個信息項正在被訪問,那麼在近期它很可能還會被再次訪問。 應用 將某些數據在一段時間內集中處理,提高cache利用率 空間局部性(Spatial Locality) 在

原创 [effectiv c++]條款33:避免遮掩繼承而來的名稱(重載,覆蓋,隱藏)

class Base { private: int x; public: virtual void mf1() = 0; virtual void mf2(); void mf3(); …… };

原创 select、poll、epoll淺析

select、poll、epoll淺析 select 概念 接口 int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timev