C++基础--类的作用域

 
我们已经学习了局部作用域和全局作用域,下面介绍类作用域,所有的类成员是属于类作用域的。
  类本身可被定义在三种作用域内:
  1. 全局作用域。这是所谓全局类,绝大多数的C++类是定义在该作用域中,我们在前面定义的所有类都是在全局作用域中。
  2. 在另一个类的作用域中。这是所谓嵌套类,即一个类包含在另一个类中。
  3. 在一个块的局部作用域中。这是所谓局部类,该类完全被块包含。
 例如:
  int fork (void); // 全局fork
  class Process {
   int fork (void);
   //...
  };
  成员函数fork隐藏了全局函数fork,前者能通过单目域运算符调用后者:
  int Process::fork (void)
  {
   int pid = ::fork(); // 使用全局fork
   //...
  }
  下面举一个嵌套类的例子。
例题例10-13
class Rectangle {
 public:
 Rectangle (int, int, int, int);
 //..
private:
 class Point {
  public:
   Point (int, int);
  private:
   int x, y;
 };
 Point topLeft, botRight;
};
  类Point嵌套在Rectangle类中,Point成员函数可定义为内联的,也可在全局作用域中,但后者对成员函数名需要更多的限制,例如:
  Rectangle::Point::Point (int x, int y)
  {
   //...
  }
  同样,在类域外访问嵌套类需要限制类名,例如:
  Rectangle::Point pt(1,1);
  下面我们再看一个局部类的例子:
例题例10-14
void Render (Image &image)
{
 class ColorTable {
 public:
  ColorTable(void) { /* ... */ }
  AddEntry(int r, int g, int b) { /* ... */ }
  //...
 };

 ColorTable colors;
 //...
}

  类ColorTable是在函数Render中的局部类。与嵌套类不同的是:局部类不能在其局部作用域外访问,例如:
  ColorTable ct; // 非法,没有定义ColorTable类!
  局部类必须完全定义在局部作用域内。所以,它的所有成员函数必须是内联的,这就决定了局部类的成员函数都是很简单的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值