首页 > 代码库 > 一个调用问题
一个调用问题
在看项目代码时,发现有个调用,明明调用的函数基类的,搞不懂为什么会调用到派生类的,这是个虚函数,我想肯定是指针的问题,我又想到了是绑定时候的问题
thrTransData::thrTransData() { m_spTimerFactory = NEWSP(TimerFactory); new std::thread(std::bind(&thrTransData::thread, this)); };
感觉这个this绑定的肯定是基类的指针啊,调用怎么会调用到派生类上面去,自己写个例子测试
#include <iostream> #include <functional> using namespace std; class A{ public: A(); virtual void fun1(){}; void fun2(); std::function<void()> m_heh; }; A::A() { m_heh = std::bind(&A::fun2, this); } void A::fun2() { fun1(); } class B:public A { public: void fun1(); private: }; void B::fun1() { std::cout<<"hhe"; } int main() { A* p = new B; p->m_heh(); getchar(); return 0; }
调用的果然是派生类的fun1,我知道是这个绑定this指针的问题,但具体的还是不清楚,得看看c++内存模型这本书,大家对这本书评价都很高,到时得看看。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。