21xrx.com
2024-11-05 18:48:30 Tuesday
登录
文章检索 我的文章 写文章
C++中如何让子类调用父类的protected成员函数或变量
2023-07-04 04:42:02 深夜i     --     --
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成员函数或变量可以使用作用域解析运算符来实现,这种方式既简单又有效。

  
  

评论区

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