咬文嚼字之 ADL 和 Koening

2021-06-28 06:32:30 字數 686 閱讀 2966

#include /*

//版本1:

namespace n;

void f(b& b)

};n::b b;

void main()

*//*

//版本2:

namespace n;

void f(int a)

};n::b b;

void main()

*///編譯出錯。找不到f這個識別符號。善於動腦子的人問題就來了:為什麼版本1就沒有這個問題呢?

//因為版本1使用koening查詢技術。利用f(b)的實際引數b所在的名字空間,得知需要查詢n名字空間的f。

//此技術的大名是:adl(argument-depentment lookup)

//問題又來了:為什麼koening要發明這個東西呢?我寫n::f(10)或者using n::f;也能解決問題呀!

//版本3:

namespace n;

b operator+(b& l, b& r)

};void main()

//總結:要像成員函式呼叫語法一樣便捷,發明了adl技術。

// b.f(); //無需指出f處於哪個名字空間,即 b.b::f()這樣的怪物。

// f(b); //普通函式也能做到這一點。

3 Struts2之咬文嚼字

讀文章可以咬文嚼字,讀 也可以。今天隨意 隨意是指讀哪個類很隨意,讀起來實際是咬文嚼字 地閱讀struts2的幾個類的 有點心得,特記錄如下。在eclipse的workspace中,很自然會先讀org.apache.struts2 這個包的類,因為它是最前面顯示。strutsstatics 介面沒有...

BasicBolt和IRichBolt之間的區別

irichbolt繼承自ibolt,ibolt會使用outputcollector來傳送元組。public inte ce ibolt extends serializableoutputcollector有兩個用於傳送元組的函式 後續component會向acker傳送ack響應。listemit...

strcpy memcpy和memset之間的區別

今天刷題時遇到了這個問題,記錄一下。strcpy比較簡單,就是拷貝字串,遇到 0 時結束拷貝。memcpy用來做記憶體拷貝,可以拷貝任何資料型別的物件並指定拷貝資料的長度 char a 100 b 50 memcpy b,a,sizeof b 總結一下 strcpy和memcpy主要有以下3方面的區...