从共享对象中的位置创建类对象

时间:2012-09-30 22:10:09

标签: c++ shared-libraries dynamic-linking shared-objects

在C中,您可以通过dlopen()动态链接共享对象,并使用dlsym()定位特定符号(函数)的地址并将其分配给函数指针。

在C ++中,如果您碰巧知道类构造函数的地址,您是否能够创建 一个新的对象呢?我确实意识到,使用一个返回类对象的静态方法是在c ++中动态链接的约定。

我是否好奇是否可以从构造函数地址创建对象。如果是这样,你能举个例子吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

你做不到。问题是你无法直接调用构造函数;所有构造函数调用都由编译器隐式生成。这也意味着你不能通过函数指针调用它。

我还试图获取一个构造函数的地址,它也不起作用(虽然这只是一个快速的黑客,不能确定它实际上是有效的) - 因为构造函数没有返回类型,接下来的问题是如何为该函数指针编写类型。