21xrx.com
2025-03-29 18:29:26 Saturday
文章检索 我的文章 写文章
C++中如何让子类调用父类的protected成员函数或变量
2023-07-04 04:42:02 深夜i     24     0
C++ 子类 父类 protected成员函数 protected变量

在C++中,protected关键字用于指定类中的成员只能由其本身及其子类访问。这种访问方式可以有效地保护类中的一些敏感信息,并且让继承该类的子类可以直接访问这些信息,而无需通过接口函数来实现。

然而,有时候在子类中需要访问父类中的protected成员函数或变量,这时候该怎么办呢?

可以采用友元函数或者使用C++中的作用域解析运算符(::)来实现访问父类中的protected成员。这里我们以作用域解析运算符为例,具体的操作步骤如下:

1.在子类中定义一个公共函数,该函数将调用父类中的protected成员函数或变量。

2.在函数实现中使用作用域解析运算符“::”来访问父类中的protected成员变量或函数。

下面是一个简单的示例程序:

#include<iostream>
using namespace std;
class Father{
protected:
  int m_num;
public:
  void sayHi()
    cout<<"I am your father!"<<endl;
  
};
class Son : public Father{
public:
  void print(){
    cout<<"My father's num is "<<Father::m_num<<endl;
    Father::sayHi();
  }
};
int main(){
  Son s;
  s.m_num = 10;
  s.print();
  return 0;
}

在这个示例程序中,我们定义了一个Father类和一个Son类,Son类是Father类的子类。在Father类中,我们定义了一个protected变量m_num和一个protected函数sayHi()。

在Son类中,我们定义了一个公共函数print(),并且使用作用域解析运算符来访问父类中的protected变量m_num和protected函数sayHi(),从而达到了访问父类中protected成员的目的。

需要注意的是,在使用作用域解析运算符时,如果被访问成员不是静态成员,则需要通过对象名或指针来访问。

总之,在C++中访问父类中的protected成员函数或变量可以使用作用域解析运算符来实现,这种方式既简单又有效。

  
  

评论区