Time of Update: 2018-12-03
曾經碰到過讓你迷惑不解、類似於int * (* (*fp1) (int) ) [10];這樣的變數聲明嗎?本文將由易到難,一步一步教會你如何理解這種複雜的C/C++聲明。 我們將從每天都能碰到的較簡單的聲明入手,然後逐步加入const修飾符和typedef,還有函數指標,最後介紹一個能夠讓你準確地理解任何C/C++聲明的“右左法則”。 需要強調一下的是,複雜的C/C++聲明並不是好的編程風格;我這裡僅僅是教你如何去理解這些聲明。注意:為了保證能夠在同一行上顯示代碼和相關注釋,本文最好在至少1
Time of Update: 2018-12-03
STL是C++標準庫的重要組成部分之一,它不僅是一個可複用的組件庫,更是一個包含演算法與資料結構的軟體架構,同時也是C++泛型程式設計的很好例子。STL中運用了許多C++的進階技術。本文介紹模板實參推斷的運用。主要參考了《C++ Primer》和《STL源碼剖析》。
Time of Update: 2018-12-03
mutable關鍵字 關鍵字mutable是C++中一個不常用的關鍵字,他只能用於類的非靜態和非常量資料成員 我們知道一個對象的狀態由該對象的非待用資料成員決定,所以隨著資料成員的改變, 對像的狀態也會隨之發生變化! 如果一個類的成員函數被聲明為const類型,表示該函數不會改變對象的狀態,也就是 該函數不會修改類的非待用資料成員.但是有些時候需要在該類函數中對類的資料成員 進行賦值.這個時候就需要用到mutable關鍵字了 例如: class Demo
Time of Update: 2018-12-03
對輕量級C++日誌類的增強這是網上找到的一個輕量級C++日誌類的實現,主要應用了Singleton模式,我增加一個函數tmWrite,主要用來進行前面帶時間的行輸出。 //log.h//hujinshan@2004.1.3 Airforce Engineering University/*//CLog* CLog::_instance = NULL; CLog::GetObj().Write( "******* 初始化完成 *******" )
Time of Update: 2018-12-03
引言C語言的精粹是程式要可以隨意操縱自己程式空間的任意記憶體,從這方面來說,C語言編程算是面向機器的編程。那麼,熟悉C的資料如何儲存就是顯得很重要了。本篇內容就是記錄自己探索C語言的資料結構在記憶體如何儲存的過程。結論只在下麵條件下得到驗證:作業系統位元:32編譯器:gcc version 4.6.3(ubuntu)mingw32-gcc資料存放區方式:小端儲存大端儲存和小端儲存大端儲存和小端儲存指的是指記憶體位址的低位存的是資料的高位還是低位。舉個例子:int
Time of Update: 2018-12-03
C++ new用法的正確方法應該如何操作?在這篇文章中我們將會根據其兩種不同的含義分別介紹一下它的影音方法,希望能給大家帶來一些協助。C++程式設計語言中有一種叫做new的術語。不過這一概念是比較模糊的,有些人把它理解為new函數,但是有的人又會把它理解為new運算子。那麼它的真正含義又是如何的呢?在這裡我們將會通過對C++ new用法的介紹,協助大家一起分析一下。 C++ new用法之一 new運算子最常用的是作為運算子的new,比如:string *str = new
Time of Update: 2018-12-03
#include <string>#include <algorithm>#include <functional>using namespace std;inline string& LeftTrim(string &str){ string::iterator iter=find_if(str.begin(),str.end(),not1(ptr_fun<int>(::isspace)));
Time of Update: 2018-12-03
第一部分, c/c++代碼Android系統原始碼目錄裡面: hardware/ril 目錄包含了所有有關於telephony的底層代碼.1.目錄架構(20101215的git版本):ril|-- CleanSpec.mk|-- include| `-- telephony| |-- ril_cdma_sms.h| `-- ril.h|-- libril| |-- Android.mk| |-- MODULE_LICENSE_APACHE2| |--
Time of Update: 2018-12-03
昨天肚腩群裡有人問LINUX下C如何擷取程式絕對路徑。初看這問題,肚腩覺得很簡單啊,就用getcwd或者argv[0]就可以了。寫了個程式試試,#include <unistd.h>int main(int argc,char *argv[]){ char buffer[100]; getcwd(buffer, sizeof(buffer)); printf("The current directory is: %s\n", buffer); printf("
Time of Update: 2018-12-03
C++中重載強制類型轉換 例1 在類中直接定義成員函數將Conver類對象強制轉換成int型#include <iostream>using namespace std; class Conver{ public: int b; operator int(){return b;} //註:這裡是把函數的實現直接寫出來}; int main(){ Conver c; c.b=100;
Time of Update: 2018-12-03
/* * WaitQuitSignal.h * * Created on: Aug 14, 2011 * Author: xian0617 */#ifndef WAITQUITSIGNAL_H_#define WAITQUITSIGNAL_H_#include <signal.h>#include <time.h>class WaitQuitSignal {public:static void init();static bool wait(bool&
Time of Update: 2018-12-03
來自: http://blog.csdn.net/xian0617/article/details/6689357/* * WaitQuitSignal.h * * Created on: Aug 14, 2011 * Author: xian0617 */ #ifndef WAITQUITSIGNAL_H_ #define WAITQUITSIGNAL_H_ #include <signal.h> #include <time.h> class
Time of Update: 2018-12-03
mutalbe的中文意思是“可變的,易變的”,跟constant(既C++中的const)是反義詞。在C++中,mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在一個const函數中。 我們知道,如果類的成員函數不會改變對象的狀態,那麼這個成員函數一般會聲明成const的。但是,有些時候,我們需要在const的函數裡面修改一些跟類狀態無關的資料成員,那麼這個資料成員就應該被mutalbe來修飾。 下面是一個小例子: class
Time of Update: 2018-12-03
最近有朋友問如下問題:#include <stdio.h>#include <stdlib.h>#include <iconv.h>#include <time.h>int main(){struct tm *tms;time_t now = time(0);tms = localtime(&now);printf("%d/n", tms->tm_year);printf("%d/n", tms->tm_mon);printf(
Time of Update: 2018-12-03
代碼通俗易通,如下List.h#include<stdio.h>template <class T> class ListNode{ T data; ListNode<T>* link; public: ListNode():link(NULL){} ListNode(T value):link(NULL),data(value){} ~ListNode(){} void
Time of Update: 2018-12-03
對於具有類類型的成員,則會調用該成員所屬類自身的預設建構函式實現初始化。內建類型成員的初值依賴於對象如何定義,如果對象在全域範圍中定義或定義為靜態局部對象,則這些成員將被初始化為0。如果對象在局部範圍中定義,則這些成員沒有初始化。 class A{ int a;public: int get() { return a; }};A a;void main(){ cout<<a.get()<<endl;}比如這個:0。
Time of Update: 2018-12-03
相信學過資料結構的都曉得這個經典問題:括弧匹配吧。廢話不多少了,看代碼吧LinkStack.h#include<stdio.h>template<class T> class LinkStackNode{public:T data;LinkStackNode<T> *link;LinkStackNode(T& value):link(NULL),data(value){}};template<class T> class
Time of Update: 2018-12-03
關鍵詞: 位域有些資訊在儲存時,並不需要佔用一個完整的位元組, 而只需占幾個或一個二進位位。例如在存放一個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,C語言又提供了一種資料結構,稱為“位域”或“位段”。所謂“位域”是把一個位元組中的二進位劃分為幾個不同的地區,並說明每個地區的位元。每個域有一個網域名稱,允許在程式中按網域名稱進行操作。 這樣就可以把幾個不同的對象用一個位元組的二進位位域來表示。一、位域的定義和位域變數的說明位域定義與結構定義相仿,其形式為:
Time of Update: 2018-12-03
#include<iostream>#include<string>#include<cstdlib>using namespace std;int main(){string str="中華人名共和國 北京 五星紅旗 義勇軍進行曲";string str_temp="";str_temp.assign(str);string result[4]={"","","",""};int position=0;for(int
Time of Update: 2018-12-03
#include<iostream>using namespace std;class Time{ int hour,minute,second;public: Time():hour(0),minute(0),second(0) {}; Time(Time &t); void getTime(); void setTime(int h,int m,int s);};Time::Time(Time &t){ hour=t.hour; minute=t.minute;