作者moonjustin (快点放长假吧@@)
看板EE_DSnP
标题Re: [问题] newOp.cpp的问题
时间Sat Dec 9 22:10:51 2006
: 因为系统将 "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