b***k 发帖数: 2673 | 1 ☆─────────────────────────────────────☆
llhhlife (cat) 于 (Fri Jul 3 10:48:48 2009, 美东) 提到:
一个在HF的中国人面试我,是Quant Develop的位子,先问了我会不会网络编程等等东
西,我告诉他不会,然后就问了一个C++的问题:
一个函数被定义成:void f(int & n){}, 问如果这样调用的话:f(5);会有什么问
题。我的答案是:根本无法编译,因为5是一个const,而int &表明该参数要被改变,
所以compiler禁止这样做。这个中国人的解释是:5在memory中没有地址,而int & 需
要传进的是地址,所以compiler需要产生一个tmp object然后把该tmp obj的地址传进
去,而把一个tmp obj传给一个reference是不行的。
我对他的解释很怀疑。因为:1。 literal constant是有地址的; 2。这个函数调用根
本不需要产生中间临时变量。我知道临时中间变量无法被传给reference,但是那只有
在类型不一致时才会产生临时中间变 |
|