首页 > 常识 >

公有继承是什么

时间: 2025-01-11 07:54:44

公有继承(public inheritance)是继承的一种形式,其特点在于 基类的公有成员和保护成员在派生类中保持原有的状态,即它们的访问权限在派生类中不变。基类的私有成员,则仍然是私有的,派生类无法直接访问。这种继承方式保持了基类成员的访问级别,使得派生类可以访问基类的公有成员和保护成员,但不能访问基类的私有成员。

在公有继承中,如果派生类定义了成员函数,这些成员函数可以访问基类的公有成员和保护成员,但不能直接访问基类的私有成员。要访问基类的私有成员,必须通过基类提供的公有或保护成员函数。

公有继承通常用于实现“is-a”关系,即派生类是一种特殊的基类,它保留了基类的大部分特性,同时可能添加或修改一些特性。

```cpp

class Base {

public:

int publicMember;

protected:

int protectedMember;

private:

int privateMember;

public:

Base() : publicMember(1), protectedMember(2), privateMember(3) {}

};

class Derived : public Base {

public:

void accessBaseMembers() {

// 可以直接访问基类的公有成员

publicMember = 10;

// 可以直接访问基类的保护成员

protectedMember = 20;

// 无法直接访问基类的私有成员

// privateMember = 30; // 这行代码会导致编译错误

}

};

int main() {

Derived d;

d.accessBaseMembers();

// d.privateMember = 30; // 这行代码会导致编译错误,因为privateMember是私有的

return 0;

}

```

在这个示例中,`Derived` 类通过公有继承从 `Base` 类继承成员,但无法直接访问 `Base` 类的私有成员 `privateMember`。