面试题答案
一键面试在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 myObj(42);
accessPrivate(myObj);
return 0;
}
- 成员函数接口:
- 类可以提供公共的成员函数,这些函数作为接口来访问和修改私有成员。
- 示例代码如下:
#include <iostream>
class MyClass {
private:
int privateData;
public:
MyClass(int data) : privateData(data) {}
// 公共成员函数来获取私有数据
int getPrivateData() const {
return privateData;
}
};
int main() {
MyClass myObj(42);
std::cout << "Accessing private data through member function: " << myObj.getPrivateData() << std::endl;
return 0;
}