C++之内部类实现总结(二百三十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中......】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮

1.前言

本篇目的:理解C++之内部类实现总结。

2.内部类实现介绍

<1>.嵌套类 (Nested Class)

嵌套类是定义在外部类中的类。内部类可以访问外部类的成员,而外部类也可以访问内部类的成员。嵌套类的作用域仅限于外部类,并且可以通过外部类名来访问。

<2>.作为外部类的成员 (Member Class)

内部类作为外部类的成员,可以直接访问外部类的成员。内部类对象的创建需要通过外部类对象进行。

<3>.本地类 (Local Class)

本地类是在函数内部定义的类,仅在该函数内部可见。本地类可以访问函数内部的局部变量,但是这些局部变量必须是静态变量或者是函数的参数。

<4>.静态内部类 (Static Inner Class)

静态内部类是在外部类中定义的静态类。它与普通静态类一样,不依赖于外部类的实例,可以直接通过外部类名访问。静态内部类不可以访问外部类的非静态成员。

<5>.继承内部类 (Inherited Inner Class)

继承内部类是创建派生类,继承自外部类的内部类。通过继承内部类,派生类可以直接访问内部类的成员,并且继承了内部类的所有特性。

3.应用实例

<1>嵌套类 (Nested Class)

cpp 复制代码
class OuterClass {
public:
    // 外部类的成员和方法...

    class InnerClass {
    public:
        // 内部类的成员和方法...
    };
};

int main() {
    OuterClass::InnerClass innerObj; // 创建内部类的对象
    // 调用内部类的成员和方法...
    return 0;
}

<2>作为外部类的成员 (Member Class)

cpp 复制代码
class OuterClass {
public:
    // 外部类的成员和方法...

    class InnerClass {
    public:
        // 内部类的成员和方法...
    };

    InnerClass innerObj; // 内部类作为外部类的成员

    void doSomething() {
        innerObj.someMethod(); // 调用内部类的方法
    }
};

<3>本地类 (Local Class)

cpp 复制代码
class OuterClass {
public:
    // 外部类的成员和方法...

    void someMethod() {
        // 本地类定义在方法内部
        class InnerClass {
        public:
            // 内部类的成员和方法...
        };

        InnerClass innerObj; // 创建内部类的对象
        // 调用内部类的成员和方法...
    }
};

<4>静态内部类 (Static Inner Class)

cpp 复制代码
class OuterClass {
public:
    // 外部类的成员和方法...

    static class InnerClass {
    public:
        // 静态内部类的成员和方法...
    };

    void doSomething() {
        InnerClass::someMethod(); // 调用静态内部类的静态方法
    }
};

<5>继承内部类 (Inherited Inner Class)

cpp 复制代码
class OuterClass {
public:
    // 外部类的成员和方法...

    class InnerClass {
    public:
        // 内部类的成员和方法...
    };
};

class DerivedClass : public OuterClass::InnerClass {
public:
    // 派生类的成员和方法...
};

int main() {
    DerivedClass derivedObj; // 创建派生类的对象,继承自内部类
    // 调用继承的内部类的成员和方法...
    return 0;
}

<6>.

cpp 复制代码
#include <cstdio>
//1.定义MPEG4Writer和其内部类.
class MPEG4Writer {
public:
  class Track;
};

//2.实现内部类Track
class MPEG4Writer::Track {
public:
  Track(){
    printf("xxx----------->%s(), line = %d\n",__FUNCTION__,__LINE__);
}
  void resetInternal(){
  printf("xxx----------->%s(), line = %d\n",__FUNCTION__,__LINE__);
}
};

int main() {
  MPEG4Writer::Track *tk= new MPEG4Writer::Track();
  tk->resetInternal();

  delete tk;
  return 0;
}

<7>.

cpp 复制代码
#include <cstdio>
//1.定义MPEG4Writer和其内部类.
class MPEG4Writer {
public:
  class Track;
};

//2.实现内部类Track
class MPEG4Writer::Track {
public:
  Track();
  void resetInternal();
};

MPEG4Writer::Track::Track() {
  printf("xxx----------->%s(), line = %d\n",__FUNCTION__,__LINE__);
}

void MPEG4Writer::Track::resetInternal() {
  printf("xxx----------->%s(), line = %d\n",__FUNCTION__,__LINE__);
}

int main() {
  MPEG4Writer::Track *tk= new MPEG4Writer::Track();
  tk->resetInternal();
  
  delete tk;
  return 0;
}
相关推荐
EllinY2 分钟前
CF2217E Definitely Larger 题解
c++·笔记·算法·构造
筠筠喵呜喵44 分钟前
Linux软件开发性能优化
linux·c++·性能优化
luck_bor1 小时前
File类&递归作业
java·开发语言
Bruce_kaizy1 小时前
c++ linux环境编程——文件io介绍以及open 、write 、read 三剑客深度详解
linux·服务器·c++·ubuntu·操作系统·文件io
PAK向日葵3 小时前
我用 C++ 写了一个轻量级 Python 虚拟机,刚刚开源
c++·python·开源
玖釉-3 小时前
下一个排列:从字典序到原地算法的完整推导
数据结构·c++·windows·算法
枕星而眠4 小时前
数据结构八大排序详解(一):四大简单排序
c语言·数据结构·c++·后端
努力努力再努力wz4 小时前
【Qt入门系列】:按钮组件全解析:从 QAbstractButton 到快捷键事件、单选与复选机制
c语言·开发语言·数据结构·c++·git·qt·github
skywalk81635 小时前
言知(Yanzhi)系统提升建议报告和完工报告 by AutoCoder
开发语言·编程
yunn_5 小时前
单例模式两种实现方法
开发语言·c++·单例模式