-1
A
回答
1
這是一個合理的問題,尤其是在一些常用語言例如Python,允許這個。
但是,如果允許對本地人的引用並假設此代碼可以編譯,請考慮這種情況。
struct MyClass {
virtual fetchValue() = 0;
};
MyClass* somefunction(){
int localVariable = 123;
struct HypotheticalClass : public MyClass {
virtual int fetchValue(){ return localVariable; }
};
return new HypotheticalClass()
}
現在,當在somefunction()的末尾返回這個MyClass的衍生物,它將保持參照現在-無效棧位置。繁榮。
當然,還有很多其他的方式來不恰當地引用無效的堆棧位置,例如,將對該局部變量的引用傳遞給您的類以獲取訪問權限。對於可以訪問本地引用或執行副本的lambdas,存在同樣的問題。
至於權威的回答,爲什麼,我瀏覽了第4版Stroustrup,並沒有看到任何有用的報告。
感謝您的有趣問題。
相關問題
- 1. 封閉本地範圍變量與全局範圍變量 - Python
- 2. 從嵌套函數的封閉範圍訪問變量
- 3. 爲什麼我的函數不能在封閉函數中訪問變量?
- 4. 在封閉範圍內修改變量
- 5. 封閉範圍
- 6. 爲什麼範圍變量不能在角度組件中訪問
- 7. 爲什麼變量不在範圍內?
- 8. 爲什麼localscope變量可以訪問函數,但在本例中不能訪問全局範圍
- 9. 爲什麼scala try塊允許重新定義封閉範圍的變量?
- 10. 訪問變量功能範圍外
- 11. JS範圍:訪問變量
- 12. 爲什麼我不能訪問從類
- 13. 從其範圍外訪問變量?
- 14. 從調用範圍訪問javascript變量
- 15. 在封閉範圍
- 16. 爲什麼封閉類
- 17. PHP:從全局函數訪問封閉範圍
- 18. 訪問本地變量從內部類
- 19. Ruby本地變量範圍
- 20. 爲什麼本地變量訪問比Python中的類成員訪問更快?
- 21. 有什麼不能從Ruby中的對象訪問類變量?
- 22. 爲什麼我不能訪問其他類的公共變量?
- 23. Swift3 - 如何訪問變量在封閉
- 24. Firebase封閉中的訪問變量
- 25. python全局變量範圍混淆。什麼是這些變量不可訪問?
- 26. Javascript:爲什麼訪問閉包變量可能會很慢
- 27. 爲什麼我的變量不能超出範圍?
- 28. Angularjs爲什麼我不能指令範圍變量「dataSource」
- 29. 在諾言中訪問本地變量然後範圍
- 30. 爲什麼變量超出範圍?
首先了解什麼是變量的範圍。 –
我知道一個變種的範圍,這是C++作者在本地類上的一個限制,所以首先要弄清楚事實。 –
在C++中,類不像Java類那樣繼承範圍。 – tkausl