-2
我已經做了一些實驗在C++與常量性和成員函數,以及我寫以下代碼:
特權指令異常稱爲INT
using namespace std;
#include <iostream>
class MyClass {
public:
int& refToInt;
MyClass(int x) : refToInt(x) { ; }
void changeValue() const { refToInt++; }
};
int main() {
int x = 10;
MyClass mc(x);
mc.changeValue();
cout << mc.refToInt;
return 0;
}
代碼編譯,但當執行mc.changeValue();
拋出一個異常:
Unhandled exception at 0x00AB1884 in tests.exe: 0xC0000096: Privileged instruction.
爲什麼我的代碼導致該異常?
「MyClass」構造函數的參數就像局部變量一樣,在構造函數體返回時超出範圍。現在猜猜'refToInt'會引用什麼......嘗試通過引用來傳遞參數。 –
由於使用懸掛參考引起的未定義行爲。 –
成員引用通常不是一個好主意。這與常量沒有任何特別的關係。 –