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; } 展开
class A{
int a;
static friend int f( );
friend int g( );
public:
friend int A( );
A(int);
}a(5);
int g( ) { return a.a; } 展开
展开全部
错误在于,
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)。
就酱紫,楼主有什么问题再追问嗯,
望采纳(●'◡'●)~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询