台灣最大程式設計社群網站
線上人數
1495
 
會員總數:239370
討論主題:185708
歡迎您免費加入會員
討論區列表 >> C/C++ >> C++ 作業
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C++ 作業
價值 : 100 QP  點閱數:160 回應數:1

樓主

Vincent
初學者
59 12
406 21
發送站內信

class POI
{
private:
float _x;
float _y;
char* _name;

public:
POI(float x, float y, char *name)
{
_x = x;
_y = y;
_name = name;
}

float getX() {return _x;}
float getY() {return _y;}
char *getName() {return _name;}

void setX(float x) {_x = x;}
void setY(float y) {_y = y;}
void setName(char *name) {_name = name;}
};


POI createPointOfInterest(float x, float y, char *poiName, char *note)
{
char temp[80];
sprintf(temp, "%s (%s)", poiName, note);

return POI(x, y, temp);
}


a.以上的程式有什麼問題?
b.如何改進該程式?



搜尋相關Tags的文章: [ C/C++ ] ,
本篇文章發表於2017-02-22 11:15
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Raymond
檢舉此回應
有很大的問題. createPointOfInterest() 傳回的指標指向的是該函式的區域陣列 temp. 當函式結束, 這個區域陣列就不復存在. 透過這個指標存取資料會導致不可預期的結果.

即使你把陣列放在 main() 裡面, 你這種指標的應用也有問題:


你自己去執行看看就知道了.
本篇文章回覆於2017-02-23 12:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.