5.3.2 它是纯面向对象的吗

这种类定义提供了有关权限的信息,通过查看该类可以知道哪些函数可以改变该类的私有部分。如果一个函数被声明为friend,就意味着它不是这个类的成员函数,却可以修改该类的私有成员,而且必须被列在该类的定义当中,因此可以认为它是一个特权函数。

C++不是完全的面向对象语言,而只是一个混合产品。增加friend关键字就是为了用来解决一些实际问题。这也说明了这种语言是不纯的。毕竟C++语言的设计目的是实用,而不是追求理想的抽象。