我怎么能访问一个类的虚拟方法与她的地址/不使用方法的名称
How can i access a virtual method of a class with her adress/without using the name of the method
class Base{
public:
virtual int first()=0;
virtual int second()=0;
};
class Derived: public Base{
public:
virtual int first(){return 5;}
virtual int second(){return 15;}
};
这是我的代码,我正在尝试实践访问它只使用指针和地址,但我不能围绕函数指针的细节在这种情况下,我尝试了很多不同的选项,并得到了很多不同的错误。
附加说明:
让我们说我的类派生是在地址40000。在我看来,这个功能应该写在地址40001或类似的地方。c++是否提供了在地址40001上调用方法的能力,或者任何其他解决方案,我完全避免了方法的名称?
可以声明指向成员函数的函数指针。就像
int (Derived::*firstptr)();
firstptr = &Derived::first;
int (Derived::*secondptr)();
secondptr = &Derived::second;
和
Derived obj;
std::cout << (obj.*firstptr)()<<std::endl;
std::cout<<(obj.*secondptr)()<<std::endl;
如果你想用指针(带有名称)访问方法:
Derived d = new Derived();
Derived* pDerived = &d;
cout << pDerived->first();
cout << pDerived->second();
但是,据我所知,没有办法访问一个函数只有一个内存地址。
相关文章:
- C++:使用方法调用析构函数的顺序是什么?
- 对类中的对象使用方法
- 正确的使用方法
- 如何使用方法ID从Powerbuilder调用PBNI方法
- 如何使用方法覆盖在输出屏幕上显示堆栈整数值
- 如果未使用方法本身,则忽略方法中的未定义符号
- 使用方法影响另一个对象的字段
- 使用方法失败更改constexpr对象成员
- 如何使用方法在SDL2中的键按键上移动矩形
- 如何使用 C++ 方法创建 JSON 文件
- 如何使用方法连接按钮,请单击
- 使用对象地址以及方法地址和签名调用C 成员函数
- C 枚举类可以使用方法
- 如何使用方法返回指向对象结构的指针?
- 无法使用方法更改成员值
- 我如何使用方法来处理大量指针
- 如果未在类 c++ 中定义方法,如何在类对象上使用方法
- 是否可以使用方法返回使用 #define 创建的变量
- 通过对象的指针数组分配内存,并使用方法设置它们的名称
- 我怎么能访问一个类的虚拟方法与她的地址/不使用方法的名称