书上有这么个例子,A类先定义,B类后定义,但A中的成员函数就可以放在B中当友元函数访问B的私有数据
答案:1 悬赏:80
解决时间 2021-02-22 01:44
- 提问者网友:孤山下
- 2021-02-21 13:54
书上有这么个例子,A类先定义,B类后定义,但A中的成员函数就可以放在B中当友元函数访问B的私有数据
最佳答案
- 二级知识专家网友:旧脸谱
- 2021-02-21 14:27
前向声明的类不能使用该类的具体的函数
声明一个foo类,这个声明,有时候也叫做前向声明(forward declaration),在声明完这个foo类之后,定义完这个foo类之前的时期,foo类是一个不完全的类型(incomplete type),也就是说foo类是一个类型,但是这个类型的一些性质(比如包含哪些成员,具有哪些操作)都不知道。
因此这个类的作用也很有限.
(1)不能定义foo类的对象。
(2)可以用于定义指向这个类型的指针或引用。(很有价值的东西)
(3)用于声明(不是定义)使用该类型作为形参或者返回类型的函数。追答
追问:friend double Cylinder::GetAreaCylinder();//错误
你好,这句帮我解释下因为Cylinder类不知道有这个操作?
追答:因为在Circle类内,Cylinder尚未定义完,此时仅仅知道有个类名叫Cylinder,但是具体实现是什么样的,此时不知道。也就是说Cylinder::GetAreaCylinder() 这个函数的地址是找不到的
声明一个foo类,这个声明,有时候也叫做前向声明(forward declaration),在声明完这个foo类之后,定义完这个foo类之前的时期,foo类是一个不完全的类型(incomplete type),也就是说foo类是一个类型,但是这个类型的一些性质(比如包含哪些成员,具有哪些操作)都不知道。
因此这个类的作用也很有限.
(1)不能定义foo类的对象。
(2)可以用于定义指向这个类型的指针或引用。(很有价值的东西)
(3)用于声明(不是定义)使用该类型作为形参或者返回类型的函数。追答
追问:friend double Cylinder::GetAreaCylinder();//错误
你好,这句帮我解释下因为Cylinder类不知道有这个操作?
追答:因为在Circle类内,Cylinder尚未定义完,此时仅仅知道有个类名叫Cylinder,但是具体实现是什么样的,此时不知道。也就是说Cylinder::GetAreaCylinder() 这个函数的地址是找不到的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯