我正在閱讀std::string
類C++
,並注意到有相當多的不同構造函數可用,給我們提供了一系列初始化特性。這讓我想知道編譯器如何選擇給定參數時選擇哪個構造函數,或者在重載的情況下,編譯器如何將函數簽名與給定的一組參數相匹配。構造函數/函數重載簽名查找時間複雜度?
如果我們在僞代碼中聲明瞭以下功能:
function f1(int numberHere) {
//....do something
}
function f1(int numberHere, string stringHere) {
//....do something
}
我決定叫f1(4)
,顯然有兩個選項可供選擇,但如果有10000選項/簽名?它會按比例延長嗎?如果是這樣,需要更長的時間?編譯器是否有一些偷偷摸摸的O(n)
方法來索引超載,這樣它就可以在程序運行時調用正確的O(1)
時間,或者不管有多少重載,但是它會在O(1)
中編譯,但是由於開啓,運行完成的結果需要更長的時間飛行簽名匹配?
這個問題甚至可以得到有效的回答嗎?
謝謝!
同意,沒有產品將可用,如果它適用於這個問題大聲笑 –