首页 > 编程语言 >C++反射机制实现

C++反射机制实现

时间:2023-02-22 11:00:37浏览次数:36  
标签:反射 cout create C++ public factoryMap Base 机制 hello

直接上代码

#include <iostream>
#include <map>

class Base
{
public:
    virtual void hello() const = 0;
};

class A : public Base
{
public:
    A()
    {
        std::cout << "A construct" << std::endl;
    }

    void hello() const override
    {
        std::cout << "A hello" << std::endl;
    }
};

class B : public Base
{
public:
    B()
    {
        std::cout << "B construct" << std::endl;
    }

    void hello() const override
    {
        std::cout << "B hello" << std::endl;
    }
};

class BaseFactory
{
public:
    virtual Base *create() const = 0;
};

template <typename T>
class Factory : public BaseFactory
{
public:
    Base *create() const override
    {
        return new T;
    }
};

int main(int argc, char const *argv[])
{
    std::cout << "----- test basic class -----" << std::endl;
    Base *a = new A();
    a->hello();
    Base *b = new B();
    b->hello();

    std::cout << "----- test Factory class -----" << std::endl;
    BaseFactory *f = new Factory<A>;
    Base *a1 = f->create();
    a1->hello();

    std::cout << "----- test Reflection -----" << std::endl;
    std::map<std::string, BaseFactory *> factoryMap;
    factoryMap["A"] = new Factory<A>;
    factoryMap["B"] = new Factory<B>;
    factoryMap["A"]->create()->hello();
    factoryMap["B"]->create()->hello();

    return 0;
}

运行结果

标签:反射,cout,create,C++,public,factoryMap,Base,机制,hello
From: https://www.cnblogs.com/kevinjen/p/17143608.html

相关文章

  • C/C++书籍借阅系统[2023-02-22]
    C/C++书籍借阅系统[2023-02-22]1.程序名称:书籍借阅系统2.课题来源:课程组自拟3.课题类型:综合型4.目的和意义:1)综合运用所学知识,解决实际问题2)全面提高学生的程序设计......
  • C++中标准库
    C++中标准库是什么?C++标准库可以分为两部分:标准函数库:由通用的、独立的、不属于任何类的函数组成的。函数库继承自C语言。面向对象类库:这个库是类及其相关函数......
  • C++中的组合
    知道C++中的组合吗?它与继承相比有什么优缺点吗?继承:继承是Isa的关系Student继承Person,则说明StudentisaPerson。优点是子类可以重写父类的方法来方便地实现对父......
  • C++面对对象:实现string类
    1//string.h2#pragmaonce3classString{4public:5String(constchar*cstr=0);6String(constString&str);7~String();89......
  • 【操作系统】操作系统的运行机制和体系结构
    1.运行机制(1)指令指令就是处理器(CPU)能识别、执行的最基本命令,比如:加法指令就是让CPU进行加法运算。(2)两种指令CPU如何判断当前是否可以执行特权指令?(3)两种处理器状态......
  • Go 中的反射 reflect 介绍和基本使用
    一、什么是反射在计算机科学中,反射(英语:reflection)是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候......
  • 二十一、Flink容错机制之状态一致性
    状态一致性  之前说到检查点又叫作“一致性检查点”,是Flink容错机制的核心。接下来就对状态一致性的概念进行说明,结合理论和实际应用场景,讨论Flink流式处理架构中的应对......
  • 反射概述
    反射概述及动态代理Author:MsuenbDate:2023-02-21Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息,并能......
  • Jvm类加载机制
         其中loadClass的类加载过程有如下几步:加载>>验证>>准备>>解析>>初始化>>使用>>卸载加载:在硬盘上查找并通过IO读入字节码文件,使用到类时......
  • 16 反射
    16反射16.1通过案例体会反射的好处16.2通过概念再体会反射16.3Class类的理解16.4提供丰富的类16.5获取字节码信息的四种形式16.6可以作为Class类的实例的种类......