作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [问题] newOp.cpp的问题
时间Sat Dec 9 21:19:55 2006
※ 引述《moonjustin (快点放长假吧@@)》之铭言:
你的问题问的很好, 有些东西的确值得在这里澄清一下...
: 借标题请问一下
: char* rrr=new char[5];
: 就我认知上这行式子会在local memory宣告rrr这个char*变数
: 而rrr里面存的内容是他指向heap memory的位置
没错, 观念很正确!
: 那为何cout<<rrr;并不会显示出这个位置?
因为系统将 "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'...
: 另cout<<(size_t)rrr;意思是说把rrr的"内容"强制放到一个size_t的变数内容里面吗?
是的.
: 另cout<<(size_t*)rrr;也是这个意思吗?
是的. 只不过是 "强制放到一个 size_t* 的变数内容里面"
: 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.121.136.41
1F:推 moonjustin:谢谢老师 但我还有问题 12/09 22:00