c++高手请进,书上讲“友元”的作用时,“反复保存现场和恢复现场”是什么意思(在线)

来源:百度知道 编辑:UC知道 时间:2024/06/17 00:19:12
书上写道:

如果在类外需要访问下一个类的私有成员,则要通过该类的公有成员函数。当需要频繁访问该私有成员时,函数调用就要反复保存现场和恢复现场,这就便利该程序的开销很大。从效率上考虑,C++提供了这种机制来解决在类外访问类的私有成员的问题。

这里的,“反复保存现场和恢复现场”是什么意思?高手帮我解释一下?

你调用另外一个成员函数的时候,由于CPU的寄存器数量有限,必须要将你原来使用的变量全部堆栈到你的内存中去,并留下调用后返回的内存地址号以便你调用的程序完成之后可以返回主调函数继续运行,这就叫保存现场。执行完被调函数后,将原来放在内存中保存的信息重新调入内存,并将被调函数所要传递的参数赋给主调函数,并请空栈中保留的主调函数的地址,然后继续运行主调函数,这就是恢复现场。

经你这么一说我写了个代码测试了下,从反汇编上来看没什么分别呀?又参考了wiki和thinking in C++, 友元的引入纯粹是为了解决设计时的特殊需要.

C++ is a hybrid object-oriented language, not a pure one, and friend was added to get around practical problems that crop up. It’s fine to point out that this makes the language less “pure,” because C++ is designed to be pragmatic, not to aspire to an abstract ideal.