码迷,mamicode.com
首页 > 其他好文 > 详细

一个调用问题

时间:2014-05-04 10:28:00      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   color   

在看项目代码时,发现有个调用,明明调用的函数基类的,搞不懂为什么会调用到派生类的,这是个虚函数,我想肯定是指针的问题,我又想到了是绑定时候的问题

thrTransData::thrTransData()
{
    m_spTimerFactory = NEWSP(TimerFactory);

    new std::thread(std::bind(&thrTransData::thread, this));
};

感觉这个this绑定的肯定是基类的指针啊,调用怎么会调用到派生类上面去,自己写个例子测试

bubuko.com,布布扣
#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;

}
bubuko.com,布布扣

调用的果然是派生类的fun1,我知道是这个绑定this指针的问题,但具体的还是不清楚,得看看c++内存模型这本书,大家对这本书评价都很高,到时得看看。

一个调用问题,布布扣,bubuko.com

一个调用问题

标签:style   blog   class   code   java   color   

原文地址:http://www.cnblogs.com/zzyoucan/p/3705749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!