面試官向我展示了一個這樣的代碼,並問我是否會編譯並給出我的推理。我非常肯定地告訴他,它不會編譯,因爲10是一個常量,您不能將常量分配給非const引用(如int & b = 10不會編譯),_a也是一個臨時變量,它是同樣也考慮了const,你不能使用非const引用來引用const變量。爲什麼編譯?期望「不能將常量分配給非const引用」
但是,在我回家後,我發現它完全可以編譯所有可能的編譯器。另外,我沒有得到這份工作。我的理解有哪些部分出錯?
class A {
int& a;
public:
A(int _a):a(_a) {}
};
int main() {
A a(10);
}
您採訪的位置是什麼?如果除了構建C++解析器之外的任何東西,我都會說需要知道C++的每一個隱藏的角落,比如這個,這可能是荒謬的。 – Mysticial
我給人的印象是,面試官過分強調了解語言的晦澀難懂的一面,並且缺乏足夠的設計技巧和最佳實踐。 –
@Mysticial:對於新開發人員來說,這是一個常見的錯誤,因爲這個代碼起初看起來很有效,但會在隨機點(在函數調用之後)失敗。 – Dani