CArchive类的>>操作符需要的参数是对象还是对象指针?
我看MSDN上说,CArchive的>>操作符的定义是这样的:CArchive&operator>>(CArchive&ar,CObject*&pOb);CArchive...
我看MSDN上说,CArchive的>>操作符的定义是这样的:
CArchive& operator >>( CArchive& ar, CObject *& pOb );
CArchive& operator >>( int& i );
......
从这里看,>>操作符需要的是基本类型或者对象类型的指针,但是我看一些书上是这样写的:
CPoint ptOrigin;
UINT nType;
CArchive ar;
.......
ar>>ptOrigin>>nType;
这样>>操作符后面的参数就不是对象或者基本类型的指针了,为什么这样也可以呢?请高手教我 展开
CArchive& operator >>( CArchive& ar, CObject *& pOb );
CArchive& operator >>( int& i );
......
从这里看,>>操作符需要的是基本类型或者对象类型的指针,但是我看一些书上是这样写的:
CPoint ptOrigin;
UINT nType;
CArchive ar;
.......
ar>>ptOrigin>>nType;
这样>>操作符后面的参数就不是对象或者基本类型的指针了,为什么这样也可以呢?请高手教我 展开
2个回答
展开全部
CArchive类的>>运算符和输入输出流中的>>都是一样的用法
至于你说的到底是对象还是对象指针,CArchive类不止把>>运算符重载一次呢,对几种类型都有重载的,譬如
CArchive& AFXAPI operator >>(
CArchive& ar,
POINT point
);
就解释了你这里的ar>>ptOrigin
而你给出的第一个重载,就解释了>>后面跟对象的时候的重载
而另外,UINT也有相应的>>重载呢
你看下我给你的这个csdn的链接,你往下找呀,每一种类型都有对应的>>符号的重载,所以才能使用
至于你说的到底是对象还是对象指针,CArchive类不止把>>运算符重载一次呢,对几种类型都有重载的,譬如
CArchive& AFXAPI operator >>(
CArchive& ar,
POINT point
);
就解释了你这里的ar>>ptOrigin
而你给出的第一个重载,就解释了>>后面跟对象的时候的重载
而另外,UINT也有相应的>>重载呢
你看下我给你的这个csdn的链接,你往下找呀,每一种类型都有对应的>>符号的重载,所以才能使用
参考资料: http://msdn.microsoft.com/en-us/library/7ww0tsw7(VS.80).aspx
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询