: 因為系統將 "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