【发布时间】:2020-01-18 08:12:08
【问题描述】:
如何创建指向类的指针。我假设,类存在于 RAM 中的某个地方,那么,是否有可能获得指向它的指针?
我不是指指向对象的指针,我指的是指向类本身的指针(如函数指针)。
【问题讨论】:
-
“指向类的指针”或“类也是对象”是其他一些语言在运行时操作类型的想法。在 C++ 中,类型操作是在编译时通过模板完成的,例如
std::array<int.10>用整数创建一个数组。 -
对我来说,这听起来像是X/Y Problem.
-
@drescherjm:这可能是有道理的。想想反射,或者只是一些元编程。
std::is_same只是来自那些 OP 预期变量的==。 -
类是编译器的抽象示意图,仅在编译时使用,因此它知道如何构造新实例,以及如何操作实例(实例物理上在内存中)。该知识被“烙印”到生成的机器代码中,该代码实现了与实例一起工作的方法(如构造函数/析构函数和其他类方法)。编译后,不再需要抽象知识并将其丢弃,只有实现所有这些行为的机器代码存储在可执行文件中。 IE。您关于类在运行时处于 ram 中的假设是错误的。它不存在
-
这是一个在 Java、C# 和其他有反射的语言中非常有意义(并且有解决方案)的问题。但这是 C++,而这里的类在编译过程中不复存在,所以答案很坚定:不。