(friend)由于类的私有和保护部分对外是隐藏的,从外.pptVIP

  • 5
  • 0
  • 约8.76千字
  • 约 40页
  • 2018-11-07 发布于河北
  • 举报

(friend)由于类的私有和保护部分对外是隐藏的,从外.ppt

(friend)由于类的私有和保护部分对外是隐藏的,从外.ppt

华中科技大学控制系C++程序设计 1—8 王卓 * * 11.6友元(friend) 由于类的私有和保护部分对外是隐藏的,从外部不能直接访问它们,只有通过公有成员函数访问。类的这种封装性和数据隐藏对提高软件的可靠性、可重用性和可维护性起到重要作用。但却增加了程序运行时的函数调用开销。因为每次通过成员函数访问类的私有数据时,对非内联成员函数都需要调用开销。如果访问非常频繁调用开销就非常大,从而导致程序运行效率极低,对内联成员函数也会增加程序代码容量。如前所述,对于一个对象的私有数据,只能通过公有部分的成员函数进行访问,这是一堵不透明的墙。若当两个不同类的对象共享同一函数时,必然带来较大的开销。出于执行效率的考虑,而并非技术上必须这么做,C++提供了一些辅助手段,允许外面的类或函数去直接访问一个类的私有数据,相当于在这堵不透明的墙上开了一个传递消息的孔,其方法之一是使用友元,下面用一个例子来说明。 若定义了向量类Vector和矩阵类Matrix,各类都隐藏了私有数据成员,并提供了完整的操作函数。为简单起见,假设向量有3个元素,下标为0、1、2。而矩阵包含3行*3列=9个元素,下标都是0、1、2。若要定义一个矩阵乘向量的函数multiply( ),首先想到的方法是将它定义成外部函数,由Vector类和Matrix类共享它,此时在Vector类和Matrix类定义中,

文档评论(0)

1亿VIP精品文档

相关文档