設計乙個Logger類

2021-09-23 21:23:17 字數 1245 閱讀 2887

需求:想要實現乙個logger可以以以下方式使用:

logger log("2013-03-05.log");

log << "this is a logger test" << endl;

log << "value of temp = " << temp << endl;

log << "array[" << index << "] = " << array[index] << endl;

實現有一點類似cout。

下面是我定義logger類:  

class logger

logger& operator << (int t)

// other operators, qchar, const char*, unsigned int, etc

// ...

logger& operator << ( logger& (*op) (logger&) )

private:

qstring m_logstr;}

static logger& endl (logger &log)

如何用《連線大家應該都很容易理解,關鍵技術點在這個endl。

其中最後乙個 operator << 過載告訴編譯器:如果《後面是乙個(logger&)(*op)(logger&)的函式指標,那麼就這麼呼叫它:(*op)(*this)

然後在全域性中實現了logger& endl(logger&)的函式。當log << endl 時,就會呼叫這個endl函式並執行。

就這樣,我何可以定義很多類似的流符號了。

那個可不可以這樣呢? 

log << size(1024) << "set size ..." << endl;

我們需要可以像上面size()可以帶參的,怎麼實現? 

struct size

int data;};

class logger

private:

int m_nsize;

}

定義結構體size,並指定其建構函式size(int value)。所以"log << size(1024)"中的"size(1024)"其實是在構造乙個size結構型別的變數,而1024就被存到了size::nsize中。

這就是我今天的收穫!謝謝**~~

寫乙個logger的類

參考 寫乙個logger的類 import logging 建立日誌物件 class logger def init self,logpath 制定log格式 format logging.formatter asctime s filename s name s line lineno d mes...

設計乙個類

1 設計乙個不能被繼承的類 1 將建構函式設為私有 此時子類不能訪問基類的建構函式,因此建立子類時就會報錯 無法訪問private成員 class base uninherit base uninherit const base uninherit rhs base uninherit operat...

設計乙個類,用get,set

建立乙個people類,裡面包含 名字 年齡 兩個成員變數,以及這兩個成員的get,set方法 要求用標頭檔案 實現檔案的標準格式實現,然後可以在main函式裡直接建立people物件 第一步 建立控制台程式 include stdafx.h include people.h include inc...