21xrx.com
2024-11-05 20:27:50 Tuesday
登录
文章检索 我的文章 写文章
C++中的私有继承:使用和注意事项
2023-06-28 16:21:45 深夜i     --     --
私有继承 C++ 中的私有继承使用 注意事项

C++中有三种继承方式:公有继承、私有继承和保护继承。本文将会着重介绍C++中的私有继承,包括其使用和需要注意的事项。

私有继承是指在子类中以私有方式继承基类中的成员函数和成员变量。这种继承方式相当于是一种黑盒子实现:虽然子类继承了基类的成员属性和方法,但是在代码实现上基类的所有内容对子类来说都是不可见的。

下面是私有继承的一个例子:


class Base {

public:

  void show_public()

    cout << "This is a public method of base class." << endl;

  

private:

  void show_private()

    cout << "This is a private method of base class." << endl;

  

};

class Derived : private Base {

public:

  void show() {

    show_public();

    // show_private(); // 编译错误

  }

};

这段代码中,`Derived`类以私有方式继承了`Base`类。在`show()`方法中,可以通过调用`show_public()`来使用基类中的公有方法,但是基类中的私有方法`show_private()`对`Derived`类来说是不可见的。

使用私有继承时需要注意以下事项:

1. 私有继承不能用于多态,因为派生类中的公共成员函数不是虚函数,所以它们不会“覆盖”基类中的函数。

2. 私有继承中的基类成员函数在派生类中变为私有成员函数,因此只能在派生类内部使用。

3. 私有继承遮盖了基类的所有公有和保护成员,在派生类中无法直接访问到。但是可以通过派生类的公有和保护成员函数来访问。

4. 如果基类中有虚函数需要重写,那么在派生类中也必须使用virtual关键字来重新声明虚函数。

总结:私有继承可以用于实现“has-a”关系,即派生类中包含一个基类对象,但是不希望在派生类的公有接口中暴露基类的成员。但是在使用私有继承时需要注意其不能用于多态、基类成员函数在派生类中变为私有成员函数、遮盖了基类的所有公有和保护成员、派生类只能通过公有或保护成员函数访问基类的成员、如果基类中有虚函数需要重写,那么在派生类中也必须使用virtual关键字重新声明虚函数。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复