该friend关键字是用来给其他类和函数访问类的private和protected成员,甚至通过他们的class`s范围之外定义。
class Animal{ private: double weight; double height; public: friend void printWeight(Animal animal); friend class AnimalPrinter; // A common use for a friend function is to overload the operator<< for streaming. friend std::ostream& operator<<(std::ostream& os, Animal animal); }; void printWeight(Animal animal) { std::cout <<animal.weight<< "\n"; } class AnimalPrinter { public: void print(const Animal& animal) { // Because of the `friend class AnimalPrinter;" declaration, we are // 允许在这里访问私有成员。 std::cout <<animal.weight<< ", " <<animal.height<< std::endl; } } std::ostream& operator<<(std::ostream& os, Animal animal) { os << "动物身高: " <<animal.height<< "\n"; return os; } int main() { Animal animal = {10, 5}; printWeight(animal); AnimalPrinter aPrinter; aPrinter.print(animal); std::cout << animal; }
10 10, 5 动物身高: 5
主要内容:友元函数,友元类在 C++ 中,一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来介绍一种例外情况——友元(friend)。 借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。 friend 的意思是朋友,或者说是好友,与
C++ 类 & 对象 类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。 友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。 如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 frien
我的C++代码示例中有一个很大的问题。“朋友”和“模板”有问题。 错误消息: Matrix.h:26:79:警告: 友元声明'std::oStream&MatrixClass::Operator<<(std::oStream&,const MatrixClass::Matrix&)'声明一个非模板函数[-wnon-template-friend]友元声明'std::oStream&Operator
本文向大家介绍简要介绍C++编程中的友元函数和友元类,包括了简要介绍C++编程中的友元函数和友元类的使用技巧和注意事项,需要的朋友参考一下 一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来补充介绍一个例外——友元(friend)。 fnend 的意思是朋友,或者
本文向大家介绍C++友元(Friend)用法实例简介,包括了C++友元(Friend)用法实例简介的使用技巧和注意事项,需要的朋友参考一下 相对于Java而言,友元是C++中特有的一种元素,很多教材上对其介绍的相对较少,因此初学的时候往往不能很快掌握,本文总结了友元的用法和一些注意的地方,供大家参考借鉴。希望能对初学C++的朋友起到一点帮助作用。 操作步骤: 1)在MyFriend类中,将Fath
问题内容: 您知道如何仅在特殊类中才能使对象可变吗?在此示例中,我希望对象PrivateObject在类内部只能是可更改的(可递增的),而在其他任何地方都不能更改。有没有办法做到这一点? 在C ++中,我会将所有属性和方法设为私有,然后将类声明为该类的朋友。 问题答案: 如果与之息息相关,为什么不使其成为一个内部类呢? 现在您不能从外面打电话: