3
所以,我有這兩個功能ref()
和pointy()
分別創建一個本地參考,並指向本地定義的INT:編譯器警告重:引用局部變量
#include <iostream>
int& ref() {
int knuckles = 6;
int &chuckles = knuckles;
return chuckles;
};
int* pointy() {
int buckles = 8;
return &buckles;
};
int main(int argc, char **argv) {
int a = ref(), *b = pointy();
int c = 14, d = 20;
std::cout << a << ' ' << *b << ' ' << c+d;
};
代碼編譯罰款,並給出了關於返回局部變量buckles
的地址的警告,但是我擔心的是它沒有說任何關於ref()
返回對knuckles
的引用。 我的編譯器(g ++通過MinGW,如果有區別)只是在工作中睡覺?有沒有關於引用使參照物超出範圍的內容?或者是我的參考語法不好?
非常感謝!
但你也不回'knuckles'一個參考,你回來'這可能很容易地被分配到非chuckles' - 本地參考。 – Nick 2012-04-11 16:14:05
你有一個錯誤的方法:你的編譯器通過指出'pointy'中的問題來幫助你。這不是必需的。你已經成功地欺騙了它在'ref'中看不到問題。 – Mat 2012-04-11 16:15:03
編譯器不需要診斷任何這些錯誤。感謝它甚至捕獲了其中一個。 (它沒有認出'ref'中的錯誤,因爲你在另一個變量裏走私它 – 2012-04-11 16:15:23