始化列表的特性可提高构造函数设计的效率,第14章将更深入地讨论这个主题。类作用域第9章介绍了全局(或文件)作用域和局部(或代码块)作用域。可以在全局变量所属文件的任何地方使用它,而局部变量只

始化列表的特性可提高构造函数设计的效率,第14章将更深入地讨论这个主题。

类作用域

第9章介绍了全局(或文件)作用域和局部(或代码块)作用域。可以在全局变量所属文件的任何地
方使用它,而局部变量只能在其所属的代码块中使用。函数名称的作用域也可以是全局的,但不能是局部
的。C++类引入了一种新的作用域:类作用域。
在类中定义的名称(如类数据成员名和类成员函数名)的作用域都为整个类,作用城为整个类的名称
只在该类中是已知的,在类外是不可知的。因此,可以在不同类中使用相同的类成员名而不会引起冲突。
例如,Stock类的shares成员不同于JobRide类的shares成员。另外,类作用域意味着不能从外部直接访问
类的成员,公有成员函数也是如此。也就是说,要调用公有成员函数,必须通过对象;
Stock sleeper ("Exclusive Ore", 100, 0.25] | // create object
sleeper.show(];
ahoe [)r
同样,在定义成员函数时,必须使用作用域解析操作符:
void Stock :: update (double price)

10.7

// use object to invoke a momber function
// invalid -- can't call mathod directly

1:

void Ik :: WiewIk[)const

cout << fuss << endl:

// fuss has class scope

// fuss is in scope
J/ ViewIk has class scope

简而言之,在类声明或成员函数定义中,可以使用未修饰的成员名称(未限定的名称),就像scll()调
用set_tot()成员函数时那样。构造函数名称在被调用时,才能被识别,因为它的名称与类名相同,在其他
情况下,使用类成员名时。必须根据上下文使用直接成员操作符(.)、间接成员操作符(->)或作用域解
析操作符( :: )。下面的代码片段演示了如何访问具有类作用域的标识符:
class Ik

privater
int fuss:
poblic:
Ik fint f = 9) |fuss - f: }
void ViewIk()const:

// Ikt:places ViewIk into scope

// fuss in scope within class methods

int maint)

Ik * pik = new Ikr
Ik ee - Ik (8):
ee.ViewIk(]:
pik->ViewIktl:

作用域为整个类的常量

有时候。使符号常量的作用城为整个类很有用。例如。Stock类声明使用字面值30米指定company 数
组的长度。另外,由于常量对于所有对象来说都是相同的,因此创建一个由所有对象共享的常量是个不错
的主意。读者可能以为这样做可行:
class Stock

private:

// constructor in scope because has class name
// class object brings Viewik into soope
// pointer-to-Ik brings Viewlk into scope

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值