gpt4 book ai didi

c++ - 指向虚函数的指针是否仍会被虚拟调用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:12 25 4
gpt4 key购买 nike

指向声明为虚函数的类成员函数的函数指针是否有效?

class A {
public:
virtual void function(int param){ ... };
}

class B : public A {
virtual void function(int param){ ... };
}

//impl :
B b;
A* a = (A*)&b;

typedef void (A::*FP)(int param);
FP funcPtr = &A::function;
(a->*(funcPtr))(1234);

B::function 会被调用吗?

最佳答案

是的。在 codepad 上测试的有效代码或 ideone :

class A { 
public:
virtual void function(int param){
printf("A:function\n");
};
};

class B : public A {
public:
virtual void function(int param){
printf("B:function\n");
};
};

typedef void (A::*FP)(int param);

int main(void)
{
//impl :
B b;
A* a = (A*)&b;

FP funcPtr = &A::function;
(a->*(funcPtr))(1234);
}

关于c++ - 指向虚函数的指针是否仍会被虚拟调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4228336/

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