| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 312 人关注过本帖
标题:C++ :: 的问题
只看楼主 加入收藏
配角
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:12
专家分:6
注 册:2010-11-4
结帖率:100%
收藏
已结贴  问题点数:0 回复次数:2 
C++ :: 的问题
老师上课讲迭代器 容器知识时的一小段代码
class TMyClass;
typedef list<TMyClass> TMyClass; // 用于存放对象的list容器
typedef list<TMyClass*> TMyClassPtrList; // 用于存放对象指针的list
TMyClass List::iterator it;
我想问的是最后一行,为什么要用 :: 而不是用 . 或者 ->。我知道在类外定义函数时要用到 :: ,但是在用对象调用函数时使用的是 . 或->。所以类比一下我觉得这里是在进行类似调用函数的操作,产生疑惑。
搜索更多相关主题的帖子: 老师 
2011-04-29 09:27
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
:: 表示域限定。
比如你写 std::cout 表示引用 名空间 std 中的 cout 对象。如果你有其它的名空间里也有 cout,就可以用 abc::cout 表示。
类似的道理,一个叫 list 的类里有 iterator 这个类型,那么就要用 list::iterator 表声明。如果另一个类 vector 里也有(事实上就是有),那么要用 vector::iterator 声明。可能是 iterator 你不熟悉,其实它是一个类型,类 list 也是。就像 int, double 之类的,不是对象。你总不会写 int.abc 这种代码吧。
你说的平时用于在类外定义函数的时候,其实就是在指定你在定义某个类的成员函数。

. 或者 -> 是用在对象上的。
比如我已经有一个 list 的对象了,那要用 list<int> ls 定义。一但定义好了,它就是一个对象,不是类型了。换句话说,它是一个类型的实体。它可以用 . 来引用成员。
如 ls.sort() 之类的。
-> 和它一样,只不过用于指针。
2011-04-29 09:37
配角
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:12
专家分:6
注 册:2010-11-4
收藏
得分:0 
回复 2楼 pangding
谢谢  得解了
2011-04-29 09:42
快速回复:C++ :: 的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029984 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved