- 途径:
- 可以通过友元函数或友元类来在类外访问非公有成员。友元函数是在类定义中声明的函数,它不是类的成员函数,但能访问类的私有和保护成员。友元类也类似,友元类的所有成员函数都可以访问另一个类的私有和保护成员。
- 示例代码(友元函数):
#include <iostream>
class MyClass {
private:
int privateData;
public:
MyClass(int data) : privateData(data) {}
// 声明友元函数
friend void accessPrivate(MyClass& obj);
};
// 友元函数定义
void accessPrivate(MyClass& obj) {
std::cout << "Accessing private data: " << obj.privateData << std::endl;
}
int main() {
MyClass myObj(10);
accessPrivate(myObj);
return 0;
}
- 示例代码(友元类):
#include <iostream>
class FriendClass;
class MyClass {
private:
int privateData;
public:
MyClass(int data) : privateData(data) {}
// 声明FriendClass为友元类
friend class FriendClass;
};
class FriendClass {
public:
void accessPrivate(MyClass& obj) {
std::cout << "Accessing private data from friend class: " << obj.privateData << std::endl;
}
};
int main() {
MyClass myObj(20);
FriendClass friendObj;
friendObj.accessPrivate(myObj);
return 0;
}