永发信息网

c++中被声明为私有的只能被本类中的成员函数引用,类外不能什么意思?

答案:2  悬赏:50  手机版
解决时间 2021-12-29 05:51
c++中被声明为私有的只能被本类中的成员函数引用,类外不能什么意思?
最佳答案
私有的成员函数不能被类外调用,如下所示:
类:A,成员函数test
如下调用则是错的:
A a;a.test(); // 不能在类外调用类的私有成员函数
全部回答
成员函数相当于c或c++中的函数。你应该用如下的方式说明一个成员函数: type name (parameter) //function body 注意:每一个成员函数必须返回一个值或声明返回为空(void)。它返回类型的说明告诉编译器它将返回什么类型的值。在某些情况下,成员函数需要表示它是否成功的完成了它的工作,此时返回类型通常为布尔型的。参数表是用逗号分开的一组变量,它将为成员函数提供所需信息。 下面例子中定义了一个成员函数。通过它,你的矩形类可以计算自己的面积了: int getarea(int w,int h) { int a; a=w*h; return a; } 另外,矩形还需要对自己进行描绘,因此它需要成员函数drawrect(),此时,你的矩形类的定义将如下所示: public class drwrect { public static void main(string args[]) { class rectangle { int width,height,area; public rectangle(int w,int h) { width=w; height=h; area=getarea(w,h); } protected int getarea(int w,int h) { int a; a=w*h; return a; } public void drawrect() { int i,j; for(i=width;i>0;i--) system.out.print("#"); system.out.print("") ; for(i=height-2;i>0;i--) system.out.print("#"); for(j=width-2;i>0;j--) system.out.print(""); system.out.print("#"); for(i=width;i>0;i--) system.out.print("#"); system.out.print(""); } } //rectangle int w=integer.valueof(args[0]).intvalue(); int h=integer.valueof(args[1]).intvalue(); rectangle myrect=new rectangle(w,h); myrect.drawrect(); } } 上例中最后一个“#”号后面还有一个system.out.print("")这是由于这个成员函数在上一行没有结束而且缓冲区没有溢出时将不把输出结果写屏。若你使用print成员函数,却没有得到输出,这时仔细确认一下你是否以""来结束你的输出流。 2:不同类型的成员函数 在上例的成员函数声明中你需要注意两点:getarea()定义为private型,drawrect()定义为public型。public型意味着任何类都可以调用它。private型,它只能被所声明的类内部调用。这些说明类型同样适用于数据变量。 若有人想改变一个私有变量,通常要引用下面的成员函数: public void setwidth(int w) { width=w; } 注意:在java中,protected只是作为关键字出现,而没有相应的功能。 3:成员函数的重载 假如你必须在不同情况下发送不同的信息给同一个成员函数的话,该怎么办呢?你可以通过对此成员函数说明多个版本(version)的方法来实现重载。重载的本质是创建了一个新的成员函数:你只需给它一个不同的参数列表(parameterlist),如下例所示: void get area(int w,int h); void get area(float w,float h); 在第二种情况下,成员函数get area()接受两个浮点变量作为它的参数,编译器根据调用时的不同参数来决定该调用哪一种成员函数,假如你把两个整数提供给成员函数,你就调用第一个成员函数;假如你把两个浮点数提供给成员函数,第二个成员函数就被调用。 4:静态成员 除了public、private和protected以外,你还可以把成员说明为static(静态)。static修饰符表明一个变量或成员函数对所有类的实例都是相同的,你也许想使用一个所有rectangle类都可以使用的变量,来说明该类的版本(version),假如你把它说明成一个static,那么该变量将对该类的所有实例都是一样的,如: static int version=1; 静态成员函数和静态变量的优点就在于他们能在没有创建类的任何一个实例的情况下被引用,引用时在“.”域前,可直接使用类名而无须使用对象名。例如,drawrect成员函数使用了system.out.println成员函数,但实际上你却未曾创建一个某个system类的对象,这正是因为out是system类的一个静态变量,所以你可以直接使用这个成员函数而无须定义一个system对象。 5:构造和析构成员函数 类有一个特殊的成员函数叫做构造成员函数,它通常用于初始化类的数据成员。在创建对象时,会自动调用类的构造成员函数。java中的构造成员函数必须与该类具有相同的名字,另外,构造成员函数一般都应用public类型来说明,这样才能在程序任意的位置创建类的实例--对象。 下面是一个rectangle类的构造成员函数,它带有两个参数,分别表示矩形的长和宽: public rectangle(int w,int h) { width=w; height=h; area=getarea(w,h); } 除了构造成员函数以外,类还提供了析构成员函数,当对象被从内存中删除时,该成员函数将会被自动调用。通常,在析构成员函数内,你可以填写用来回收对象内部的动态空间的代码
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
不翼而飞意思是什么
中国许多古建筑,何以能千年不遭雷击?这个问
米粉和奶粉那个更容易饿
判决书中的民敖初字什么意思
台州市三门县到宁波市宁为县距离
猇亭区宜昌智锋酒店(金猇路46号)地址有谁知道
自主招生和统考有啥区别啊拜托了各位 谢谢
6.3元里有________个一角.
酒吧做男模。好不好?工资怎么样?主要是做什
BAcademy Awards The Academy Awards are the
我喜欢的人叫我闷油瓶是什么意思
祝寿对联中母亲用什么称谓为好
怎么购买高德地图的数据
我国古代各个朝代的顺序及年代
手机360安全卫士清理时误删照片和歌曲怎么恢
推荐资讯
各种水果的英文怎么写?最好有二十种
One day, a well-known speaker was invited
广东省内这边,哪里可以接种HPV疫苗啊?想接
神星村村委会办公位置在哪啊?好找么?
“温润如君子,豪迈如丈夫,风流如词客,丽娴
谁知道安庆离枣庄有多远啊
沧州市运河区婚姻登记处地址在什么地方?想过
现代文阅读(课内比较16分)(甲)正说着,只见
台湾声音很嗲的女歌手唱过偿还的
关于n次根号n的阶乘的极限
夏河县畜牧局地址在哪?我要去那里办事
香菇是人工种植的,会农残超标吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?