“ 友元”违反了封装吗?
不违反。和成员函数类似,“友元”是一种显式地授予访问权限的机制。不能(于一个符合标准的 程序)在不修改源代码的情况下授予你访问类的权限。例如:
C++应该说是计算机语言里最难的,所以有很多问题会让学习C++的人不理解,比如为什么java可以设计哪么好用,为什么C++不可以。主要从这些方面讨论一下,讲为什么会设计成这样
不违反。和成员函数类似,“友元”是一种显式地授予访问权限的机制。不能(于一个符合标准的 程序)在不修改源代码的情况下授予你访问类的权限。例如:
因为“this”被引入 C++(事实上那时还是带类的 C)的时候,还没有引用(reference)这个概念。同样地,遵循 Simula 的用法而选择了“this”这个词,而不是(后来)Smalltalk 的“self”。
跟C语言一样,C++ 也没有定义对象在内存中的存放形式,而仅仅定义了一些必须遵循的语义约束。因此,不同的编译器(BCB,VC)实现起来都有所不同。
有一本书中第二章有一个简短的解释。《The Annotated C++ Reference Manual》简称为 ARM,也有一些图形例子。