C++ 模板类继承

template<class T>
class A
{
protected:
    void Test() {
        printf("%f",0.1f);
    }
};
template<class T>
class B:public A<T>
{
public:
    void Test2() {
        Test();
    }
};

去除模板可以正常的使用,但是当加上模板后,父类的Test函数将不能正常被调用。

错误 C3861 “Test”: 找不到标识符

template<class T>
class A
{
protected:
    void Test() {
        printf("%f",0.1f);
    }
};
template<class T>
class B:public A<T>
{
public:
    void Test2() {
        this->Test();
    }
};

 使用父类的方法需要加上zhis关键字,用对象的地址去call方法。

 

 从内存上看没有方法表,从调用过程看直接使用编译过的地址去call父类的方法。

posted @ 2022-09-21 16:54  过往云烟吧  阅读(71)  评论(0)    收藏  举报