派生类如何实现对基类私有成员的访问?
时间: 2023-11-26 07:06:42 浏览: 526
派生类无法直接访问基类的私有成员,但可以通过以下两种方式来实现对基类私有成员的访问:
1.使用公有成员函数:基类中定义一个公有成员函数来访问基类的私有成员,然后在派生类中调用该公有成员函数即可访问基类的私有成员。
例如:
```c++
class Base {
private:
int privateData;
public:
void setPrivateData(int data) {
privateData = data;
}
int getPrivateData() {
return privateData;
}
};
class Derived : public Base {
public:
void setBasePrivateData(int data) {
setPrivateData(data);
}
int getBasePrivateData() {
return getPrivateData();
}
};
int main() {
Derived d;
d.setBasePrivateData(10);
cout << d.getBasePrivateData() << endl; // 输出 10
return 0;
}
```
2.使用友元类:将派生类声明为基类的友元类,以便于派生类可以访问基类的私有成员。
例如:
```c++
class Base {
private:
int privateData;
friend class Derived;
};
class Derived : public Base {
public:
void setBasePrivateData(int data) {
privateData = data;
}
int getBasePrivateData() {
return privateData;
}
};
int main() {
Derived d;
d.setBasePrivateData(10);
cout << d.getBasePrivateData() << endl; // 输出 10
return 0;
}
```
需要注意的是,友元类的使用会破坏封装性,因此应该尽量避免使用。
阅读全文