一文弄懂C++的内部类

简介: 内部类概念如果一个类定义在另一个类的内部,这个内部的类,叫做内部类。内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。

内部类概念

如果一个类定义在另一个类的内部,这个内部的类,叫做内部类。

内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。

内部类特性

  • 内部类是外部类的友元类,但是外部类不是内部类的友元。(即内部类可以访问外部类)。
  • 内部类定义在外部类的public、protected、private()都是可以的;但是内部类受这些限制符的限定。
  • 注意内部类可以直接访问外部类种的static成员,不需要外部类的对象/类名。
class A
{
  class B    // 内部类
  {
  public:
    void Print()
    {
      A t1;
      cout << static_a << endl;  // 内部类访问静态成员,可以突破类域进行访问
      cout << A::_a << endl;   //  报错
      cout << t1._a << endl;   //而普通成员只能通过对象进行访问
    }
  };
private:    //定义在A类下的成员变量
  int _a;
  static int static_a;
};
  • 在类外定义内部类,受外部类的限制。
int main()
{
  A::B t2;
  t2.Print();
  return 0;
}
  • sizeof(外部类) = 外部类,和内部类无关。(不算静态成员)
int main()
{
  cout << sizeof(A) << endl;  // 4字节
  //注意静态成员不计入里面。
  return 0;
}

目录
相关文章
|
1月前
|
存储 设计模式 编译器
【C++篇】C++类与对象深度解析(五):友元机制、内部类与匿名对象的高级应用
【C++篇】C++类与对象深度解析(五):友元机制、内部类与匿名对象的高级应用
25 2
|
6月前
|
存储 算法 C语言
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)
一、初始化列表 ⭕初始化列表概念 ⭕初始化列表的优点 ⭕使用场景 ⭕explicit关键字 二、Static成员 ⭕Static成员概念 🔴静态数据成员: 🔴静态函数成员: ⭕使用静态成员的
112 0
|
4月前
|
编译器 C++
【C++】类和对象⑤(static成员 | 友元 | 内部类 | 匿名对象)
📚 C++ 知识点概览:探索类的`static`成员、友元及应用🔍。
|
6月前
|
编译器 C语言 C++
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象(上)
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象
45 1
|
6月前
|
编译器 C++
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
33 2
|
6月前
|
存储 Java C++
【C++类和对象】探索static成员、友元以及内部类
【C++类和对象】探索static成员、友元以及内部类
|
6月前
|
Java 编译器 C语言
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象(下)
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象
31 0
|
6月前
|
C语言 C++
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象(中)
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象
45 0
|
算法 C++
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)下
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)下
78 0
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)下
|
6月前
|
编译器 C++
【c++】内部类和匿名对象
【c++】内部类和匿名对象