21xrx.com
2024-09-20 00:53:01 Friday
登录
文章检索 我的文章 写文章
如何在C++中调用类里的保护成员
2023-07-05 04:56:54 深夜i     --     --
C++ 保护成员 调用

在C++中,类的成员分为公有成员、私有成员和保护成员。公有成员可以被类的外部访问和修改,私有成员只能被类的内部访问和修改,而保护成员可以被类的派生类访问和修改。

如果我们想在C++中调用一个类的保护成员,可以通过继承实现。

定义一个派生类,让它继承原来的类,这样就可以在派生类中访问和修改原来类中的保护成员了。如下所示:


#include<iostream>

using namespace std;

class Base

  protected:

    int num;  //填写保护成员

;

class Derived: public Base{

  public:

    void setNum(int n)  

      num = n;  //通过派生类访问并修改原有保护成员

    

    void showNum()

      cout<<"num ="<<num<<endl;  //通过派生类访问原有保护成员

    

};

int main(){

  Derived d;

  //d.num = 10;  //错误,无法直接访问保护成员

  d.setNum(10);

  d.showNum();

  return 0;

}

在上述代码中,我们可以看到Base类中定义了一个保护成员num。而Derived类继承了Base类,所以它可以访问和修改Base类中的保护成员num,例如通过setNum函数给它赋值,然后再通过showNum函数输出它的值。

需要注意的是,在派生类中,可以通过调用基类的成员函数来访问和修改保护成员。例如,使用Base类的构造函数来初始化num:


#include<iostream>

using namespace std;

class Base{

  protected:

    int num;  //填写保护成员

  public:

    Base(int n) 

      num = n;  //构造函数初始化保护成员

    

};

class Derived: public Base{

  public:

    Derived(int n):Base(n){ }  //调用Base类的构造函数

    void showNum()

      cout<<"num ="<<num<<endl;

    

};

int main(){

  Derived d(10);

  d.showNum();

  return 0;

}

在这个例子中,我们使用Base类的构造函数来初始化num,然后将它作为参数传递给派生类的构造函数。这样,在派生类中就可以使用num了。

总的来说,在C++中调用类里的保护成员需要通过继承和在派生类中定义成员函数的方式来实现。需要注意的是,保护成员可以被类的派生类访问和修改,但不能被类的外部访问和修改。

  
  

评论区

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