首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c++中的Friend函数

c++中的Friend函数
EN

Stack Overflow用户
提问于 2018-03-23 03:29:04
回答 3查看 138关注 0票数 0

为什么我们总是说朋友函数不是成员函数,即使它们是在类中声明的?我在许多书和互联网上都找到了,但我没有得到适当的解释。

EN

回答 3

Stack Overflow用户

发布于 2018-03-23 03:43:42

friend (C++)

如果您声明了一个先前未声明的友元函数,则该函数将导出到封闭的非类作用域中。

票数 1
EN

Stack Overflow用户

发布于 2018-03-23 04:31:00

C++标准所说的In (或者说是在C++11的时候。链接在这一点上有点过时)

在类的定义中声明的

函数(使用friend说明符([class.friend])声明的函数除外)称为该类的成员函数。

在后来的标准草案中,我很难找到类似的措辞。

也就是说,我认为这是不言而喻的。

states:

类的朋友是一个函数或类,它被授予使用该类中私有的和受保护的成员名称的权限。类通过友元声明的方式指定它的友元。这样的声明为朋友提供了特殊的访问权限,但它们不会使被提名的朋友成为beFriending类的成员。

friend是类之外的东西,它被类授予了对类中受保护的私有成员的访问权限。这意味着friend本身不是成员。

另请注意,friend函数不必在类中实现。一个声明就足够了。

票数 0
EN

Stack Overflow用户

发布于 2018-03-23 04:34:01

从概念上讲,成员函数的类型为Ret(Class::*)(Args...),在类instance.member_function()的实例上被调用,并且可以通过this访问被调用的实例。友元函数不适合“成员函数”。该函数是在单独的作用域中定义的,而不是在类中定义的,即使它看起来类似于成员函数声明。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49437142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档