c ++友元函数在内存位置上有何不同?

时间:2017-06-29 11:49:04

标签: c++ friend-function

我试图理解将函数定义为friend function如何影响其在内存(RAM)中的位置。

例如,每个类都有一个包含其所有方法和函数的表。此外,虚拟函数放在vtable

friend个函数属于哪里?

我担心的原因是由于[递归]函数已经通过我的c ++代码中的多个线程调用了很多次,最终我得到&# 34; v'表损坏运行时异常" 。这是内存损坏的标志(例如as I saw here)。

此外,当将此函数声明为常规的类外函数时,异常仍然存在。

当声明该功能为friend时(它设计不好,但为了实验),该异常不再弹出。

因此我的问题是关于朋友的功能'记忆位置。

1 个答案:

答案 0 :(得分:8)

friend与编译器,链接器或运行时加载器放置函数的位置无关,它只是一个告诉编译器函数可以回避类的可见性规则的关键字。 / p>

即使在类中内联定义friend函数,它仍被视为全局非成员函数。