c语言题目, 请指出如下程序中的错误之处:

5.3请指出如下程序中的错误之处:classA{inta;staticfriendintf();friendintg();public:friendintA();A(in... 5.3 请指出如下程序中的错误之处:
class A{
int a;
static friend int f( );
friend int g( );
public:
friend int A( );
A(int);
}a(5);
int g( ) { return a.a; }
展开
 我来答
百度网友19ca2fc
2018-05-05
知道答主
回答量:9
采纳率:100%
帮助的人:4.9万
展开全部

错误在于,

1.

friend int A( );

在一个类中声明了一个与类名相同的友元函数(A()),

结果会导致友元函数被当成类的构造函数,

编译器会报 “构造函数不能指定返回类型”的错误。

2.

static friend int f( );

函数f()不能同时声明为static 函数和友元函数,

不然会报“储存类说明符在友元函数声明中无效”的错误。

函数被声明为友元函数后,

也就有了extern的属性,

而extern 和static 可以说是互相对立的,

所以如果先什么为友元函数后再声明函数为static函数,

也会报错—— “‘static’和就说明符‘extern’冲突”

in a word,static 和 friend 不能同时存在于一个函数

3.

反驳一下一楼观点。

一楼观点有误。

友元函数(g)可以直接访问对象的私有成员(a.a)。

就酱紫,楼主有什么问题再追问嗯,

望采纳(●'◡'●)~

哈妮130602
2018-05-04 · 超过16用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:22.8万
展开全部
可以这样直接访问私有成员吗,要通过共有接口吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式