Koenig查詢(ADL)簡析

2021-07-03 04:31:19 字數 833 閱讀 2685

adl,引數相關查詢,也稱作為koenig查詢(以andrew koenig的名字命名),

是指在編譯器對無限定域的函式呼叫進行名字查詢時,所應用的一種查詢規則。

f(x, y, z); // unqualified

n::f(x, y, z); // qualified

上面的函式呼叫,第乙個f就是無限定域的函式呼叫,第二個則限定了在名字空間n裡面,也是說使用了完全限定名。

我們首先來看乙個函式所在的域的分類:

1:類域(函式作為某個類的成員函式(靜態或非靜態))

2:名字空間域

3:全域性域

而koenig查詢,它的規則就是當編譯器對無限定域的函式呼叫進行名字查詢時,除了當前名字空間域以外,

也會把函式引數型別所處的名字空間加入查詢的範圍。

請看下面完整的例程:

// details /ad1.cpp

// cfree 3.5 下編譯執行通過

#include

namespace x

namespace n;

void f(e)

}void f(int)

//using namespace n;

int main()

注意這裡的f()不是成員函式,可以通過下例區別

// details /ad2.cpp

#include

namespace x

class n ;

void f(e)

};//using :: n;

void f(int)

int main()

你看區別出來了吧,這裡兩個f()進行普通查詢。

多表連線查詢簡析

本文主要列舉兩張和三張表來講述多表連線查詢。新建兩張表 表1 student 截圖如下 表2 course 截圖如下 此時這樣建表只是為了演示連線sql語句,當然實際開發中我們不會這樣建表,實際開發中這兩個表會有自己不同的主鍵。www.2cto.com 一 外連線 外連線可分為 左連線 右連線 完全...

關於ADL的查詢順序

argument dependent lookup或koening lookup法則 當我們給函式傳遞乙個類型別的物件時,首先會在常規的作用域查詢,其次在實參類所屬的命名空間查詢。查詢順序如下 1.先在本作用域內查詢 2.在實參的命名空間 和 全域性作用域中 同時查詢 這一規則也叫做argument...

Druid索引與查詢原理簡析

druid 是乙個為在大資料集之上做實時統計分析而設計的開源資料儲存。這個系統集合了乙個面向列儲存的層,乙個分布式 shared nothing的架構,和乙個索引結構,來達成在秒級以內對十億行級別的表進行任意的探索分析。由於druid儲存的是時間序列資料,按列的型別,上述資料可以分為以下三類 我們用...