{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 反射\n", "\n", "参考:[reflection-cpp-cli](https://learn.microsoft.com/zh-cn/cpp/dotnet/reflection-cpp-cli) & [reflexpr](https://en.cppreference.com/w/cpp/keyword/reflexpr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "反射允许在运行时检查已知数据类型。反射允许枚举给定程序集中的数据类型,并且可以发现给定类或值类型的成员。无论类型在编译时是已知还是引用,情况都是如此。这使反射成为开发和代码管理工具的有用功能。\n", "\n", "计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。比喻来说反射就是程序在运行的时候能够“观察”并且修改自己的行为。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## C++ 本身提供的工具\n", "\n", "- `sizeof`:查询类型的内存大小\n", "- `typeid`:运行时检查类型信息\n", "- `type_traits`:元编程的重要组成部分,它提供了大量对类型进行查询和操作的实用工具,很多反射技巧或多或少都用到了这个库。" ] } ], "metadata": { "language_info": { "name": "python" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }