我已经阅读了一些关于什么是元类的内容,但我想知道它们是否可以在 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;
}
Run Code Online (Sandbox Code Playgroud)
在倒数第二行中使用 Meta<double> 会强制编译器实例化 Meta<double> 类;sizeof 运算符对 Meta 进行操作,从而表明这不仅仅是语义糖并且该类已被实例化。即使没有实例化 Meta 类型的对象,程序也已完成。
| 归档时间: |
|
| 查看次数: |
10820 次 |
| 最近记录: |