[問題] 類別中的 constructor 問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DevC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
#include <iostream>
#include <cstdlib>
using namespace std;
class tra
{
private:
char from[4];
char to[4];
int train_no;
public tra(char *ptra="台北", char *ptrb="新竹", int c=1001)
{
strcpy(from,ptra);
strcpy(to,ptrb);
train_no = c;
}
void show(0
{
cout<<"從"<<from<<"到"<<to<<endl;
cout<<"車次為"<<train_no<<endl;
}
};
int main()
{
tra ticket;
ticket.show();
return 0;
}
餵入的資料(Input):
預期的正確結果(Expected Output):
本來是希望看到輸出結果為,車票資訊從台北到板橋,車次為1001。
但是輸出時,卻是出現從台北板橋到板橋。
^^^^^^^^ ^^^^
然而,我是故意讓char from[]只有4的大小,如果調成5,則輸出就正常了。
很好奇為什麼當我把前面的陣列大小縮減到不足以裝下兩個中文字的大小時
(因為還要留1byte給結束字元),會出現這種不預期的錯誤。
(from 居然也會出現 to 貼上來的字。)
想了很久,但是還是想不出個所以然。希望有高手可以幫助解惑,感謝感謝!
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.171.196.89
推
10/30 01:49, , 1F
10/30 01:49, 1F
→
10/30 01:50, , 2F
10/30 01:50, 2F
→
10/30 01:59, , 3F
10/30 01:59, 3F
→
10/30 02:00, , 4F
10/30 02:00, 4F
→
10/30 02:20, , 5F
10/30 02:20, 5F
→
10/30 06:22, , 6F
10/30 06:22, 6F
推
10/30 11:22, , 7F
10/30 11:22, 7F
→
10/30 13:03, , 8F
10/30 13:03, 8F
→
10/31 02:40, , 9F
10/31 02:40, 9F