gpt4 book ai didi

c++ - 如何在 C++ 中实现元类?

转载 作者:太空狗 更新时间:2023-10-29 23:34:48 25 4
gpt4 key购买 nike

我已经阅读了一些关于什么是元类的资料,但我想知道它们是否可以在 C++ 中实现。

我知道 Qt 库正在使用 MetaObjects,但它使用 C++ 的扩展来实现它。我想知道是否可以直接使用 C++。

谢谢。

最佳答案

如果元类的工作定义是“其实例化本身就是类的语言实体”,那么泛型就是 C++ 中的元类:

#include <iostream>
using namespace std;

template <typename T>
class Meta {
public:
Meta(const T&init) : mData(init) {}
// ...
private:
T mData;

};

int main(int, char **) {
cout << "The size of Meta<double> is " << sizeof(Meta<double>) << endl ;
return 0;
}

在倒数第二行中使用 Meta 迫使编译器实例化 Meta 类; sizeof 运算符对 Meta 进行操作,从而证明这不仅仅是语义糖并且该类已被实例化。即使没有实例化 Meta 类型的对象,程序也已完成。

关于c++ - 如何在 C++ 中实现元类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com