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;
}
相关推荐
陈文锦丫7 小时前
MQ的学习
java·开发语言
liwulin05068 小时前
【PYTHON-YOLOV8N】如何自定义数据集
开发语言·python·yolo
神仙别闹8 小时前
基于QT(C++)实现学本科教务系统(URP系统)
数据库·c++·qt
青蛙大侠公主8 小时前
Thread及其相关类
java·开发语言
爱吃大芒果8 小时前
Flutter 主题与深色模式:全局样式统一与动态切换
开发语言·javascript·flutter·ecmascript·gitcode
云栖梦泽9 小时前
易语言数据库操作:结构化数据管理的核心
开发语言
deng-c-f9 小时前
Linux C/C++ 学习日记(49):线程池
c++·学习·线程池
电子硬件笔记9 小时前
Python语言编程导论第七章 数据结构
开发语言·数据结构·python
南棱笑笑生9 小时前
20251217给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-5.10】后调通ov5645【只能预览】
linux·c语言·开发语言·rockchip
ulias2129 小时前
C++ 的容器适配器——从stack/queue看
开发语言·c++