面试题答案
一键面试在C++中,可以通过友元函数或友元类来实现在类外访问类的私有成员。
友元函数
- 定义:友元函数是在类定义中使用
friend
关键字声明的非成员函数,它可以访问该类的私有和保护成员。 - 示例代码:
#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 obj(42);
accessPrivate(obj);
return 0;
}
友元类
- 定义:如果一个类A被声明为另一个类B的友元类,那么类A的所有成员函数都可以访问类B的私有和保护成员。
- 示例代码:
#include <iostream>
class ClassB;
class ClassA {
public:
void accessPrivate(ClassB& obj);
};
class ClassB {
private:
int privateData;
public:
ClassB(int data) : privateData(data) {}
// 声明ClassA为友元类
friend class ClassA;
};
void ClassA::accessPrivate(ClassB& obj) {
std::cout << "Accessing private data of ClassB: " << obj.privateData << std::endl;
}
int main() {
ClassB obj(100);
ClassA a;
a.accessPrivate(obj);
return 0;
}