大家好,編程C/C++代碼的專家。
我偶然發現了這段代碼,但我很困惑2個函數返回了什麼。
任何一種靈魂都可以幫助我嗎?
我試圖使代碼儘可能對其他人有用,這是一般的&。這些C++函數返回什麼? ClassA *&func1()
ClassA*& func1() {
static ClassA* mClassA;
return mClassA;
}
ClassA* func2() {
ClassA*& mClassA = func1();
if(!mClassA) {
... // omitted some code that fill mClassA with data.
}
return mClassA;
}
[編輯]也想問,做FUNC1()和FUNC2的* &()相互抵消?
應該指出,返回一個指針的引用沒有任何意義,而不是返回指針本身。返回指向私人數據的指針本來就是不好的做法。 – Lundin
在主題和標籤中刪除了每個提到的C,因爲C在這個問題中沒有引用。 – Lundin
@Lundin對指針的引用是IMO在這裏很重要,因爲指針可能在func2()中被賦值。其他的解決方案是將指針返回指針。 – marcinj