继承错题汇总
如果没有明确地被修饰符修饰,那么就是私有成员,最好是在父类中写明如何调用的方法。子类成员要获取他就需要通过父类的成员函数。
1342
如果有父类(基类)的话,先调用基类的构造函数。而在析构时先对子类进行析构,再调用父类的析构函数。这个过程就像建房子,一层一层地建起来,拆的时候也从上往下拆。也是利用栈的原理。
子类也需要用基类方法访问私有成员,或者使用友元函数
#include <iostream>class Base {
private:int privateValue; // 基类的私有成员public:Base(int value) : privateValue(value) {} // 构造函数// 声明友元函数friend void accessPrivateValue(Base& b);
};// 友元函数定义
void accessPrivateValue(Base& b) {std::cout << "Accessing private value: " << b.privateValue << std::endl;
}class Derived : public Base {
public:Derived(int value) : Base(value) {} // 构造函数
};int main() {Base base(42); // 创建基类对象Derived derived(100); // 创建派生类对象// 通过友元函数访问基类的私有成员accessPrivateValue(base);// 不能直接访问 base 的 privateValue// std::cout << base.privateValue; // 这将导致编译错误return 0;
}
在基类中声明友元函数,然后友元函数就可以传入基类对象,来调用。