C++嵌套类与局部类详细解析

 更新时间:2013年09月12日 09:02:09   作者:  
从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类之外的作用域使用该类名时,需要加名字限定

1. 嵌套类
外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。
从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类之外的作用域使用该类名时,需要加名字限定。

嵌套类中的成员函数可以在它的类体外定义。

嵌套类的成员函数对外围类的私有成员没有访问权,反之亦然。

嵌套类仅仅只是语法上的嵌入。

2. 局部类
类也可以定义在函数体内,这样的类被称为局部类(loacl class)。局部类只在定义它的局部域内可见。

局部类的成员函数必须被定义在类体中。

局部类中不能有静态成员函数。

在实践中,局部类很少使用。

下面给出一段代码来说明:

复制代码 代码如下:

#include<iostream>
using namespace std;

class Outer
{
public:
 class Inner
 {
 public:
  void Fun();
 };
public:
    Inner obj_;
 void Fun()
 {
   cout<<"Outer::Fun...."<<endl;
   obj_.Fun();
 }
};

void Outer::Inner::Fun()
{
  cout<<"Inner::Fun..."<<endl;
}

void Fun()
{
  class LocalClass
  {
  public:
   int num_;
   void Init(int num)
   {
     num_=num;
   }
   void Display()
   {
     cout<<"num_"<<num_<<endl;
   }
  };
  LocalClass lc;
  lc.Init(10);
  lc.Display();
}

int main()
{
  Outer o;
  o.Fun();
  Outer::Inner i;
  i.Fun();
  Fun();
  return 0;
}


运行结果:

相关文章

  • Qt自定义控件实现圆圈加载进度条

    Qt自定义控件实现圆圈加载进度条

    这篇文章主要为大家详细介绍了Qt自定义控件实现圆圈加载进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • vs2022 qt环境搭建调试的方法步骤

    vs2022 qt环境搭建调试的方法步骤

    最近net6和vs2022发布,本文就详细的介绍一下vs2022 qt环境搭建调试的方法步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 浅谈C++中对象的复制与对象之间的相互赋值

    浅谈C++中对象的复制与对象之间的相互赋值

    这篇文章主要介绍了浅谈C++中对象的复制与对象之间的相互赋值,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++中cin.getline()和getline()函数的区别小结

    C++中cin.getline()和getline()函数的区别小结

    这篇文章主要介绍了C++中cin.getline()和getline()函数区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C++实现Linux下弹出U盘的方法

    C++实现Linux下弹出U盘的方法

    这篇文章主要介绍了C++实现Linux下弹出U盘的方法,实例分析了C++在Linux平台上进行IO操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • VS中scanf为何会报错详解

    VS中scanf为何会报错详解

    在我们刚使用vs时,在使用scanf函数时常会遇到报错提醒,下面这篇文章主要给大家介绍了关于VS中scanf为何会报错的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • C语言实现带头双向循环链表的接口

    C语言实现带头双向循环链表的接口

    这篇文章主要为大家详细介绍了C语言实现带头双向循环链表的接口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • VisualStudio2019配置OpenCV4.5.0的方法示例

    VisualStudio2019配置OpenCV4.5.0的方法示例

    这篇文章主要介绍了VisualStudio2019配置OpenCV4.5.0的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C++之std::vector删除元素的几种方式及区别说明

    C++之std::vector删除元素的几种方式及区别说明

    这篇文章主要介绍了C++之std::vector删除元素的几种方式及区别说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C++跳转语句之Goto对变量定义的影响详解

    C++跳转语句之Goto对变量定义的影响详解

    goto语句也被称为无条件转移语句,这篇文章主要介绍了C++跳转语句之Goto对变量定义的影响,文中通过示例代码解文字介绍的很详细,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面跟着小编一起来学习学习吧。
    2016-11-11

最新评论