21xrx.com
2024-12-23 00:20:53 Monday
登录
文章检索 我的文章 写文章
如何在C++子类中访问父类的private属性
2023-06-22 13:50:54 深夜i     --     --
C++ 子类 父类 private属性 访问

在 C++ 中,我们可以通过继承来扩展一个类的功能。子类可以访问父类的 public 和 protected 成员,但是不能直接访问父类的 private 成员。那么如何在 C++ 子类中访问父类的 private 属性呢?本文将为您介绍两种方法。

## 方法一:使用友元函数

C++ 中的友元函数可以访问类的 private 成员,我们可以借助这个特性来访问父类的私有属性。具体步骤如下:

1. 在父类中声明子类为友元类,即在父类中添加以下语句:


friend class ChildClass;

2. 在子类中定义一个友元函数,该函数可以访问父类的 private 属性,例如:


class ChildClass : public ParentClass {

public:

  void print()

   cout << "The parent's private member is " << ParentClass::privateMember << endl;

 

  // 定义友元函数

  friend void accessParentPrivate(ChildClass childObj);

};

void accessParentPrivate(ChildClass childObj)

  // 访问父类的 private 成员

  cout << "The parent's private member is " << childObj.privateMember << endl;

3. 在子类中调用该友元函数,以访问父类的私有属性:


int main() {

  ChildClass c;

  accessParentPrivate(c);

  return 0;

}

## 方法二:使用父类的 getter 和 setter 方法

另一种方法是使用父类的 getter 和 setter 方法来访问私有属性。我们在父类中对私有属性设置 getter 和 setter 方法,然后在子类中调用这些方法来获取或修改私有属性的值。具体步骤如下:

1. 在父类中定义 getter 和 setter 方法,例如:


class ParentClass {

private:

  int privateMember;

public:

  void setPrivateMember(int value)

   privateMember = value;

 

  int getPrivateMember()

   return privateMember;

 

};

2. 在子类中调用父类的 getter 和 setter 方法,以访问私有属性:


int main() {

  ChildClass c;

  c.setPrivateMember(10);

  cout << "The parent's private member is " << c.getPrivateMember() << endl;

  return 0;

}

通过这两种方法,我们可以在 C++ 子类中访问父类的 private 属性,以满足特定的需求。在实际应用中,我们应该根据具体的情况选择适合的方法。

  
  

评论区

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