MST

星途 面试题库

面试题:C++模板类派生新类时的继承关系梳理

假设有一个模板类`template <typename T> class BaseTemplate { /*... */ };`,现在要从它派生出一个新类`Derived`,要求新类增加一个成员函数`void newFunction();`,请写出完整的C++代码实现,包括类的定义和成员函数的实现,并且阐述在这种派生关系下,`BaseTemplate`中的成员在`Derived`中的访问权限情况。
24.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
template <typename T>
class BaseTemplate {
    // 假设BaseTemplate有一些成员
    int baseMember;
public:
    BaseTemplate() : baseMember(0) {}
};

template <typename T>
class Derived : public BaseTemplate<T> {
public:
    void newFunction();
};

template <typename T>
void Derived<T>::newFunction() {
    // 这里可以写新函数的具体实现
}

在这种派生关系下(public继承):

  • BaseTemplate中的public成员在Derived中仍然是public的,可以在Derived类的外部通过Derived对象访问。
  • BaseTemplate中的protected成员在Derived中变成protected的,只能在Derived类及其派生类的成员函数中访问。
  • BaseTemplate中的private成员在Derived中是不可访问的,即使在Derived类的成员函数中也无法直接访问。