切忌在类的初始化列表中调用类的成员函数

来源:互联网 发布:巨人名录数据库网站 编辑:程序博客网 时间:2024/05/01 14:27
class Base{public:        // 在这里虚表还没有生成,虚指针还没有初始化    Base(int value): m_k(func(value))    {            }        virtual int func(int value)    {        return value * 2;    }        int GetK() const    {        return m_k;    }    protected:        int m_k;    };class Drive: public Base{    public:        Drive(int value): Base(value), m_i(func(value)), m_j(value)    {            }        int func(int value)    {        return value * 3;    }        int GetI() const    {        return m_i;    }        int GetJ() const    {        return m_j;    }    private:        int m_i;    int m_j;    };
上面的例子中在构造函数的初始化列表中调用成员方法,但是this指针还没有初始化完成,虚表以及虚指针还没有进行初始化引起就会存在问题,可能达不到想要的结果,这里的func函数调用都是本类的函数
0 0
原创粉丝点击