我有一個簡單的類:訪問nullptr的可能性如何?
class B
{
public:
int getData() { return 3; }
};
然後,我初始化它的指針與nullptr:
B *foo{ nullptr };
,然後嘗試使用它自帶的驚喜:
int t = foo->getData();
現在t是3.如果沒有構建這個類,那可能怎麼樣?是否因爲getData()不使用「this」?這打破了我所有關於指針的知識。
這是預期的行爲?我在Visual Studio 2013中工作。
它的工作原理是因爲'foo-> getData()'等同於'getData(foo);'而被調用者從不* dereferences *參數。請注意,即使它起作用,它在C++中也被歸類爲* undefined behavior *。 – Nawaz
感謝所有的答案。在我看來,它不應該是未定義的行爲,它應該崩潰。從我的角度來看,這是安全問題。如果一個方法接收到一個指向類的指針並且這個指針是nullptr,我可以使用這個指針來調用一個方法。是的,我知道它不能保證它會起作用,但是在你的圖書館裏是一個漏洞。 – LeDYoM
LeDYoM:「*在我看來,它不應該是未定義的行爲,它應該崩潰。」*請耐心使用該語言,閱讀C++的設計目標及其歷史。 – Nawaz