C++继承机制详解:同名隐藏与重载的区别、派生类默认成员函数及栈的实现
面向对象编程的三大特性为封装、继承与多态。本文重点探讨 C++ 中的继承机制,涵盖访问控制、继承实现栈、作用域规则(同名隐藏与重载的区别)以及派生类的默认成员函数。
一、继承的定义与访问控制
继承允许我们基于现有类创建新类,复用其成员并扩展新功能。例如,Student 和 Teacher 都具备人的共性(姓名、地址、电话),但各有特有属性(学号、职称)。通过继承 Person 类,可以避免代码冗余。
class Person {
public:
void identity() {
std::cout << "void identity() " << _name << std::endl;
}
protected:
std::string _name = "张三"; // 姓名
std::string _address; // 地址
std::string _tel; // 电话
private:
int _age = 18; // 年龄
};
class Student : public Person {
public:
void study() { /* ... */ }
protected:
int _stuid; // 学号
};
class Teacher : public Person {
public:
void teaching() { /* ... */ }
protected:
std::string title; // 职称
};
访问控制规则:
- 私有成员继承:父类的 成员会被继承到子类对象中,但在子类内部和外部均(无法直接访问)。


