MST

星途 面试题库

面试题:C++类外访问非公有成员复杂场景分析

考虑如下C++代码结构:class Base { private: int basePrivate; public: Base(int val) : basePrivate(val) {} }; class Derived : public Base { public: Derived(int val) : Base(val) {} // 在Derived类的成员函数中,如何通过合理的方式访问Base类的basePrivate成员,使得在类外的特定函数中能够间接获取到basePrivate的值(假设在类外有一个函数void outerFunc(Derived& d),需要在这个函数中获取到Base类中basePrivate的值)。
16.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 解决方案思路
    • 由于basePrivateBase类的私有成员,直接在Derived类中无法访问。一种常见的方法是在Base类中提供一个公共的访问器(getter)函数,然后在Derived类中可以调用这个公共函数来间接获取basePrivate的值。
  2. 代码示例
class Base {
private:
    int basePrivate;
public:
    Base(int val) : basePrivate(val) {}
    // 添加公共访问器函数
    int getBasePrivate() const {
        return basePrivate;
    }
};

class Derived : public Base {
public:
    Derived(int val) : Base(val) {}
};

void outerFunc(Derived& d) {
    int value = d.getBasePrivate();
    // 在这里可以对获取到的basePrivate的值进行处理
}

在上述代码中:

  • Base类中添加了getBasePrivate函数,它是一个公共成员函数,用于返回basePrivate的值。
  • Derived类继承自Base类,并且可以调用Base类的公共成员函数getBasePrivate
  • outerFunc函数中,通过Derived类对象d调用getBasePrivate函数,从而获取到Base类中basePrivate的值。