C++ 友元函数/实际使用的一些注意事项/重复定义

本文介绍了C++中友元函数的使用注意事项,特别是当其他类成员作为友元函数时可能出现的重复定义问题。解决方法包括在类A中声明使用类B私有成员的函数,然后在类外定义,最后在类B中声明为友元。重点在于函数体不应在类声明中定义,而应在外部单独定义,以防止重复定义错误。总结来说,应先进行超前引用声明,然后在每个类中仅声明函数,最后在外部定义函数体,不加大括号。
摘要由CSDN通过智能技术生成

友元函数可以分成1.外部函数 2.其他类函数成员作为友元函数
其他的诸如友元函数导致信息不安全的老梗就不多说了,简单说说今天遇到的问题

  1. 重复定义问题,出现在 其他类成员作为友元函数的时候

    • (1). 在A类的声明中写下函数
    • (2). 在A类外给出具体定义 / 在A类声明中直接给出定义都会导致->
    • (3). 之后再在目标类中写下 friend void A::function 就会报错“redefined”

    1.问题已经解决:如何利用其他类成员函数作为友元函数
    (1). 第一个应该先在类A中写下关于“你要怎么用类B中的私有成员”的函数声明
    (2). 然后在类外给出具体定义
    (3). 最后在在类B中写上准许调用的friend的字样

注意事项:
(1). friend函数声明写在公有部
(2). 具体是用常规对象还是指针对象无所谓
(3). 分在一个文件里还是两个文件里无所谓

(4).最大的问题仅仅是在于函数体到底是写在里面还是写在外面,写在里面就是错的
报错:B中成员由于还未定义,你现在写上怎么操作B成员显然是没有意义的
同时报错:在B中的friend字样后面显示本函数已经被重复定义了

(5).Summary: 函数体到底是写在里面还是写在外面,怎么决定

  • 函数想要操作其他类数据成员,但是目前此类还没给出
  • 我们写上超前引用声明
  • 但是超前引用声明只是允许你在函数参数中出现这个类的对象,那,我想调用这个类的方法或者想要操作一下类里面的数据
  • 唯一的方法是我先在函数声明里面写上我要用到这个类的对象
  • 然后等这个类的完整定义给出来以后我再在类外部单独定义具体怎么调用函数或者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值