}
16.变量作用域
1)程序级:
包含组成该程序的所有文件。
属于程序级作用域的有外部函数和外部变量
2)文件级:
仅在定义它的文件有效。
属于文件级作用域的有部函数和外部静态变量
3)函数级:
仅在定义它的函数体有效。
属于函数级作用域的有函数的形参和函数定义的自动类变量
4)块级:
属于块级的有定义在分程序、if语句、switch语句及循环语句中的自动变量、寄存器类变量和部静态变量
其中作用域属于前两类的变量习惯上称为全局变量,属于后两类的称为局部变量。
另外有以下说明:
1)部函数的定义用关键字static实现,外部函数的定义用关键字extern实现,静态变量(包括部的及外部的)用关键字static实现,函数的默认类型为外部函数
2)外部变量、外部静态变量、部静态变量定义时有默认值:
int型的为0;浮点型的为0.0;char型的为空
17.//用类计算平均分
#include
#include
classCStuScore
{
public:
charname[7];
charno[9];
CStuScore(floats0,floats1,floats2)
{
fScore[0]=s0;
fScore[1]=s1;
fScore[2]=s2;
}
voidSetScore(floats0,floats1,floats2)
{
fScore[0]=s0;
fScore[1]=s1;
fScore[2]=s2;
}
~CStuScore()
{
cout<<"-----------------------------------\n";
}
floatGetAverage();
voidShowScore()
{
cout<"<}
private:
floatfScore[3];
};
floatCStuScore:
:
GetAverage()
{
return(float)((fScore[0]+fScore[1]+fScore[2])/3);
}
voidmain()
{
CStuScoreone(60,70,74);
strcpy(one.name,"明");
strcpy(one.no,"21010101");
one.ShowScore();
one.SetScore(60,88,64);
one.ShowScore();
}
18.//对象成员的初始化
#include
classCPoint
{
public:
CPoint(intx,inty)
{
nPosX=x;
nPosY=y;
}
voidShowPos()
{
cout<<"当前位置:
x="<}
private:
intnPosX,nPosY;
};
classCSize
{
public:
CSize(intl,intw)
{
nLength=l;
nWidth=w;
}
voidShowSize()
{
cout<<"当前大小:
l="<}
private:
intnLength,nWidth;
};
classCRect
{
public:
CRect(intleft,inttop,intright,intbottom);
voidShow()
{
ptCenter.ShowPos();
size.ShowSize();
}
private:
CPointptCenter;
CSizesize;
};
CRect:
:
CRect(intleft,inttop,intright,intbottom):
size(right-left,bottom-top),ptCenter((right+left)/2,(bottom+top)/2)
{
}
voidmain()
{
CRectrc(10,100,80,250);
rc.Show();
}
19.//通过友元实现对类中私有成员及保护成员的访问
#include
classCPoint
{
public:
CPoint()
{
m_x=m_y=0;
}
CPoint(unsignedx,unsignedy)
{
m_x=x;
m_y=y;
}
voidprint()
{
cout<<"X="<}
friendCPointInflate(CPoint&pt,intnOffset);//声明友元函数
private:
unsignedm_x,m_y;
};
CPointInflate(CPoint&pt,intnOffset)//定义友元函数
{
CPointptTemp=pt;
ptTemp.m_x+=nOffset;
ptTemp.m_y+=nOffset;
returnptTemp;
}
voidmain()
{
CPointpt(10,20