僅出於好奇和教育和澄清的原因我想問一下,我使用參考和值的方式是好的或不好的。帶參考文獻的最佳做法
理論上:
class ComplexGraphicalShape {
...
public:
void setRasterImageURL(const QString &rasterImageURL);
const QString &rasterImageURL() const;
...
private:
const QString *_rasterImageURL;
};
...
void ShadowGram::setRasterImageURL(const QString &rasterImageURL) {
safeDelete(_rasterImageURL); // handle deletion
_rasterImageURL = new QString(rasterImageURL);
}
const QString &ShadowGram::rasterImageURL() const{
// Question 2: Why is it a problem if I return
// return "www.url.com/shape_url.jpg"
return *_rasterImageURL; // that is the right way
}
...
complexGraphicalShape().setRasterImageURL(kURLImagesToShare + imageName);
complexGraphicalShape().setRasterImageURL("www.url.com/url.jpg"); // Question 1.
我的第一個問題是,我如何能長久使用的是內部setRasterImageURL
functioncall創建的臨時對象的引用?這個變量在什麼地方存在?(在堆棧中如果我沒有弄錯,但是如果我用另一個臨時參考調用另一個函數會怎麼樣
我的第二個問題是,爲什麼我在問題2一節中收到警告?用這個return "www.url.com/shape_url.jpg"
那個東西是一種類似於多久我可以使用臨時對象
感謝您的時間的回答和解釋
你爲什麼用'new'創建'QString'? – 2014-11-25 10:41:01
我認爲「參考的有效期是多久?」問題在主題 – 2014-11-25 12:50:41