精華區beta EE_DSnP 關於我們 聯絡資訊
: 因為系統將 "operator << (ostream& os, const char* str)" 重新 define 成將 : str 所指的字串印出來. 原來如此 : 你可以做一個實驗 --- : ====== : class A : { : .... // whatever : public: : friend ostream& operator << (ostream& os, const A*); : }; : ostream& operator << (ostream& os, const A*) : { : .... // do something other than printing out the address : } : int : main() : { : A* a = new A; : cout << a << endl; : } : ====== : You will see "cout << a << endl" does not print out the address of 'a'... 其實我不懂老師這實驗的用意 因為若是自己把class A的<< operator重新over load 那本來就不會印出a的位置阿? : : 另cout<<(size_t)rrr;意思是說把rrr的"內容"強制放到一個size_t的變數內容裡面嗎? : 是的. : : 另cout<<(size_t*)rrr;也是這個意思嗎? : 是的. 只不過是 "強制放到一個 size_t* 的變數內容裡面" : : 謝謝 後來我去試了一下 還是找不到我的想法不知錯在哪裡 char* rrr=new char[5]; 我的目標是想把系統偷存的5印出來 size_t b=size_t(rrr)-4; 所以我就先把rrr的內容轉成size_t的變數 再把它減四byte 感覺上現在b的數字就是系統存'5'的位置了 cout<<*((char*)b)<<endl; 然後我再把b存進char*變數裡面 再用*想把裡面的數字印出來 但是螢幕上什麼都沒出現=.= 請問我的想法哪裡錯了呢 謝謝렊 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.218.0.112