请教c++里的冒号

为轮子而生 2010-06-16 05:55:48
void print_entry(const string& s)
{
typedef list<Entry>::const_iterator LI;
for(LI i=phone book.begin();i!=phone_book.end();++i)
{
const Entry& e=*i;
if(s==e.name)
{
cout<<e.name<<' '<<e.number<<'\n';
return;
}
}
}

烦请解释一下代码中双冒号的含义
我对:和::不是很理解,请问C++中的冒号有没有具体的说明,在什么情况下使用:或者::?
另,const_iterator是list提供的迭代器类型吗?const_iterator和iterator有什么不同呢?

问题可能有些傻,还是请不吝赐教,最好能详细说明各种用法,非常感谢!
...全文
526 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wade_2003 2010-06-17
  • 打赏
  • 举报
回复
:号还有一个作用是参数列表的初始化会用到
void set():num(0){}
huzhongtian 2010-06-17
  • 打赏
  • 举报
回复
除了上面讲的外,单冒号:还可以用于GOTO语句跳转的标签名称
为轮子而生 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 ilovesafety 的回复:]
都讲的不是很清楚,我看电子档也说是命名空间,可是什么是命名空间呢?
[/Quote]

名字空间是一种描述逻辑分组的机制。也就是说,如果有一些声明按照某种准则在逻辑上属于同一个集团,就可以将它们放入同一个名字空间,以表明这个事实。
——《The C++ Programming Language》
ilovesafety 2010-06-17
  • 打赏
  • 举报
回复
都讲的不是很清楚,我看电子档也说是命名空间,可是什么是命名空间呢?
zuanyong 2010-06-16
  • 打赏
  • 举报
回复
十楼讲的挺不错的
zero_cui 2010-06-16
  • 打赏
  • 举报
回复
::代表一种类属关系,假如你定义了类class abc,类里有一函数f(),当你以后要用到这个函数时,就可以写abc A,A::f() 在这A是类abc的对象
而:是在类继承时用的,比如上面的类要想生成一个子类B,就可以写成 class B :public abc,在这:指示了新类B继承自类abc
free_swallow8938 2010-06-16
  • 打赏
  • 举报
回复
命名空间~~
cattycat 2010-06-16
  • 打赏
  • 举报
回复
::表示作用域,一般在名字空间,还有类的内部声明一个类型或静态变量,需要用::访问。
:在类的构造函数初始化列表,三元条件表达式中a>b?a : b这样类似的用法,还有结构体的位域。
这个你见的多了自然能区分来含义,很容易的。
const_iterator是const的,多了个常量属性。
wuyu637 2010-06-16
  • 打赏
  • 举报
回复
命名空间
pengzhixi 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 rocmemory 的回复:]
我对:和::不是很理解,请问C++中的冒号有没有具体的说明,在什么情况下使用:或者::?
另,const_iterator是list提供的迭代器类型吗?const_iterator和iterator有什么不同呢?[/Quote]

:在条件运算符?:以及继承里面会有用比如 struct Drived:public Base{}
还有初始化列表里面struct Test{ Test(int i):m(i){}};


const_iterator表示这个迭代器所指的元素不应该被修改。 而iterator则不是
你可以对比下 const int*p; int*p;
zhangweiit 2010-06-16
  • 打赏
  • 举报
回复
:号,在两个情况下用
类的继承时
class SubClass : SuperClass
{}

三元符 a > b ? a : b;

::与,用来解析命名空间,
如string在std命名空间下,则有std::string
liutengfeigo 2010-06-16
  • 打赏
  • 举报
回复
::解作用域
huanmie_09 2010-06-16
  • 打赏
  • 举报
回复
: 见得比较多的就是条件表达式a = b>c?b:c中;
还有位域的声明中,
struct bs
{
int a:8;
int b:2;
int c:6;
};

:: 为作用域运算符.
至于迭代器,请楼主参看:
http://book.csdn.net/bookfiles/17/1001759.shtml
npuhuxl 2010-06-16
  • 打赏
  • 举报
回复
C++中没有:
::的作用就是取某个名字空间(类、命名空间、结构体、枚举等)中的一个变量、类型或子名字空间

list<Entry>::const_iterator就是list<Entry>中typedef 的迭代器类型
kui27 2010-06-16
  • 打赏
  • 举报
回复
::貌似是调用的作用。
本例中程序调用list的迭代器。。。

本人新人,不对之处,请大家指教。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧