问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++成员函数的声明

发布网友 发布时间:2022-04-25 21:42

我来回答

3个回答

热心网友 时间:2022-04-25 23:11

成员函数相当于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);
}

除了构造成员函数以外,类还提供了析构成员函数,当对象被从内存中删除时,该成员函数将会被自动调用。通常,在析构成员函数内,你可以填写用来回收对象内部的动态空间的代码

热心网友 时间:2022-04-26 00:29

在头文件中声明函数只要写出函数原型就可以了,如:void Cat();

热心网友 时间:2022-04-26 02:04

#include <iostream>
using nemaspace std;
int main()
{
intx1
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
dell电脑散热是按哪个键 风水中的北方与肾的关系 20分+100分 哈尔滨近期招聘会 哈尔滨信息港的基本信息 哈尔滨信息港基本信息 哈尔滨市最近的招聘信息? 黑龙江省招聘查询入口(龙招港黑龙江招生网2020招聘信息)? 小区车位如何配比 身上红点不痛不痒是怎么回事 万家乐LJSQ20-12UF1保修信息 我给老师帮忙老师给我钱我该怎么做 想送点礼物给老师,给位帮帮忙,送点什么比较好? 找老师帮忙该怎么说 在c#中这个错误怎么改,给位老师帮帮忙? 想请老师帮忙,请吃饭老师说不用了太客气,那该怎么办 我真的很需要这个信息,请老师帮帮忙,也请你原谅我的言语不当,谢谢_百度问一问 在职学位班级里我是组长,班主任发了本周末上课通知,关于正直的(谐音),我该不该转发本组同学小群? 给老师赔礼道歉,请求原谅,并请求帮忙,送钱好吗 农村烟道往里反风 烟道保温有何优缺点? 妥瑞症候群的相关电影 up“仙荼儿”讲述自己确诊罕见病的视频引发关注,你知道罕见病有哪些吗? 抽动症怎么和小舞蹈病区别? 妥瑞氏症如何治疗 抽动症治疗的“雷区”有哪些? 基底核的回路和神经递质 网红争先打卡的遂宁景点,不来看看吗? 如果你有位患妥瑞氏综合征的同学,你打算如何对待他/她? 妥瑞综合征幼儿适合在普通班级学习吗? 神经元损失会引发妥瑞氏综合征吗 想让老师帮忙 怎么说? 请老师帮忙怎么说(想让老师帮忙做一个图,但自己不会) 如何很好的送礼找老师帮忙?急急急。。。 叫老师帮忙安排好班级怎么表达? 众星捧月(北京)文化传媒有限公司怎么样? 打开方式(北京)文化传媒有限公司怎么样? 叫好(北京)文化传媒有限公司怎么样? 点视(北京)文化传媒有限公司怎么样? 北京抱抱堂文化传媒有限公司怎么样? 游戏王里面的三幻神和他们融合出来的无限大的技能分别是什么? 游戏王坏兽能吃究极幻神吗? 游戏王三幻神一体究极的幻神是禁卡吗? 游戏王究极幻神一体是假卡吗? 游戏王究极的幻神禁了吗 请问 游戏王之中如何能够组合出一套三幻神终极卡组 游戏王里面三幻神合体成什么? 游戏王究极奥利哈刚之神和编码为VJMP的幻神能用吗 《游戏王》中〔三幻神〕VS〔三幻魔〕那个最强 求游戏王三幻神卡组的详细卡表!!! 游戏王无限大的卡和带三的牌组(全部)如三幻神、三幻魔、三极神、三骑士、*三幻神、*三幻魔等等