面試題:
寫函式判斷乙個變數是否為指標?
tip:
如果同時存在普通函式和其過載版本、模板函式、可變引數函式,編譯器會優先呼叫普通函式和其過載版本,然後依次時模板函式和可變引數函式!
示例:
#include
#include
using
namespace
std;
void test(int i, int j)
執行結果:
知道了上述知識點,就可以解決面試題了!
利用函式模板與可變引數函式的匹配優先順序,判斷乙個變數是否是指標:
#include
#include
using
namespace
std;
template
void isptr(t* i)
tip:
如果是指標型別,編譯器就會優先匹配模板函式,如果匹配不上,才匹配可變引數函式!
這種方法雖然解決了問題,但是效率卻不高,再做一些改進!
#include
#include
using
namespace
std;
#define isptr(v) (sizeof(isptr(v)) == sizeof(int))
template
int isptr(t* i);
char isptr(...);
int main(int argc, char *argv)
tip:
上述**,本質上還是利用函式匹配優先順序,但是我們增加了sizeof運算子,該運算子是在編譯器就處理的,所以在編譯器結果就被計算好了。通過函式返回值的大小差異,來判斷編譯器呼叫了哪個函式,從而判斷是否是指標!
面試題(十一)
11.iphone os有沒有垃圾 gc 沒有。iphone開發的時候沒有垃圾 機制。13.什麼時候用delegate,什麼時候用notification?答 delegate針對one to one關係,並且reciever可以返回值 給sender,notification 可以針對one to...
linux C經典面試題十一
1.有以下表示式 int a 248 b 4 int const c 21 const int d a int const e b int const f const a 請問下列表示式哪些會被編譯器禁止?為什麼?c 32 d b d 43 e 34 e a f 0x 321f c 這是個什麼東東,...
hadoop面試題整理 十一
1.hbase怎麼預分割槽?2.hbase怎麼給web前台提供介面來訪問?3.htable api有沒有執行緒安全問題,在程式中是單例還是多例?4.hbase有沒有併發問題?5.metaq訊息佇列,zookeeper集群,storm集群,就可以完成對 推薦系統功能嗎?還有沒有其他的中介軟體?6.st...