C++友元
C++中的友元(friend)是一种特殊的关系,它允许一个非成员函数或非当前类的成员函数访问一个类的私有成员。
具体来说,友元可以是一个函数、一个类或一个整个命名空间。
友元的声明通常在类定义中,它们可以被用来在类的外部访问私有或受保护的成员。
友元关系是单向的,即友元函数可以访问类的私有成员,但类不能访问友元函数的私有成员。
C++友元函数
如果在本类以外的其他地方定义了一个函数,在类体中用 friend 对其进行声明,此函数就称为本类的友元函数。
友元函数可以访问类的私有成员和受保护成员,就像类的成员函数一样。
友元函数可以是全局函数、类的静态成员函数或其他类的成员函数。
友元函数的声明通常放在类定义中,在函数定义中需要使用关键字friend来标识它是一个友元函数。
友元函数的作用在于,当需要访问类的私有成员或受保护成员时,可以通过友元函数来完成,而不必将这些成员公开给其他函数或类。
友元函数不仅可以是一般函数,还可以是另一个类中的成员函数。
下面举个一个具体的友元函数案例:
编译运行结果:
在上面的代码中,定义了一个 MyFriend 类,它有一个私有成员变量 myPrivateVar。
然后声明了一个友元函数 printPrivateVar
它可以访问类的私有成员变量。
在主函数中,创建了一个 MyClass 对象 obj,并调用了友元函数 printPrivateVar,它输出了类的私有成员变量 myPrivateVar 的值。
C++友元类
C++中的友元类(friend class)是指在类定义中声明为友元的另一个类。
友元类可以访问类的私有成员和受保护成员,就像类的成员函数一样。
友元类的声明通常放在类定义中,在类定义中需要使用关键字friend来标识它是一个友元类。
友元类的作用在于,当需要访问类的私有成员或受保护成员时,可以通过友元类来完成,而不必将这些成员公开给其他类。
与友元函数不同,友元类之间可以互相访问彼此的私有成员和受保护成员。
下面举个一个具体的友元类案例:
编译运行结果: