首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

类外实现成员函数的好处(C+)

报错代码

事情是这样的,在学友元时,自己跟着教程的思路写了一段代码

运行后报错

虽然提前定义了JieGay,但是并没有写实现,因而报错,且一并导致MyHouse中的友元声明失效,JieGay类中的visit()无法访问MyHouse的私有成员。

于是将代码改成

结果还是报错

不管这两个类的顺序如何,总会有一个未定义报错,且JieGay始终无法访问到MyHouse的私有成员杰哥不要啦~

错因

对着教程又仔细看了一遍,发现自己跟教程唯一的不同就是教程的成员函数是在类外实现的,而我写的是在类内实现。于是乎将代码改为

果然不报错了,JieGay也可以顺利访问到MyHouse的私有成员让我康康!

反思

仔细想了一下,前后区别只是编译的顺序不同,编译器是从上往下编译的,如果在类内就实现成员函数,编译的时候必然会出现一方未定义的情况,而如果改为类外实现,则可以随意控制函数编译顺序,让前置类型先编译出来。虽然之前也学过类外实现的写法,但嫌麻烦一直没用,今天总算是明白类外实现的好处了。。。

摘自https://cloud.tencent.com/developer/article/2141806

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230405A06MKP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券