为了账号安全,请及时绑定邮箱和手机立即绑定

C++:作用域解析运算符::

C++:作用域解析运算符::

C++
Cats萌萌 2019-03-21 10:14:13
int CBox::operator > (const CBox& aBox) const{return this->Volume() > aBox.Volume() ;}这个函数本身就在CBox类里面,为什么还得在函数头前加上int CBox::?这不是多此一举吗?或者特殊的目的在里面?它是这样的class CBox{//definition of the constructors and class members hereint CBox::operator > (const CBox& aBox) const { return this->Volume() > aBox.Volume() ; } }如果我不加CBox::绝对Okay啊,因为这函数本身就是在类CBox里面,这样讲没错吧?
查看完整描述

4 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

 这是为了提高代码的可读性。  
  作用域解析运算符::使用方法如下:
  1 域名::函数/类型定义 表示定义某个域的函数/类型
  2 ::函数/类型调用 表示调用全局的函数/类型
  补充:当函数/类型已经在某个特定域内,则可以省略域名,也可以不省略
  依据补充条件,人们往往不省略,以方便在较为复杂的文件中表明某个函数/类型所属的域 ,增加代码的可读性。

查看完整回答
反对 回复 2019-03-25
?
慕标5832272

TA贡献1966条经验 获得超4个赞

这个::是 域运算符,是表示取 什么里面的什么东西,和点号不同,点好是
对象的,->是指针的,如果只是一个类名或者是一个命名空间,就使用::

查看完整回答
反对 回复 2019-03-25
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

CBox类里面只是函数的声明,而int CBox::operator > (const CBox& aBox) const 才是函数的定义,定义函数的时候肯定要加上返回类型的int 另外,CBox::是说明函数的作用域,说明此函数是类CBox的成员函数.

查看完整回答
反对 回复 2019-03-25
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

这是一个类的成员函数的定义,因此这样写完全符合语法,但是和书上讲的不同,是因为我们习惯了先入为主。

这段代码没有语法错误,只是习惯不同。

查看完整回答
反对 回复 2019-03-25
  • 4 回答
  • 0 关注
  • 968 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信