cpp中 private: friend void show(Student *pstu);合法吗?
时间: 2024-03-24 16:41:24 浏览: 59
在 C++ 中,可以使用 `friend` 关键字将一个非成员函数声明为类的友元函数,从而使它能够访问该类的私有成员。友元函数可以是全局函数、类的成员函数或其他类的友元函数。
在类的访问说明符 `private` 中声明友元函数是合法的,因为友元函数可以访问类的私有成员。因此,`private: friend void show(Student *pstu);` 是合法的语法。
下面是一个简单的示例代码,展示了在类的 `private` 中声明友元函数的用法:
```cpp
#include <iostream>
class Student {
public:
Student(int score) : score(score) {}
private:
int score;
friend void show(Student* pstu);
};
void show(Student* pstu) {
std::cout << "The score of the student is: " << pstu->score << std::endl;
}
int main() {
Student stu(90);
show(&stu); // 调用友元函数输出私有成员
return 0;
}
```
在上面的示例中,我们在类 `Student` 中声明了一个友元函数 `show()`,它可以访问类的私有成员 `score`。在 `main()` 函数中,我们创建了一个 `Student` 对象 `stu`,并调用了友元函数 `show()` 来输出对象的私有成员 `score` 的值。
阅读全文