快速业务通道

C++面向对象编程入门:类(class)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
allscore::gradescore;//返回平均成绩
}
};
int ballscore=0;//定义一个与类名称相同的普通全局变量
int test;
void main()
{
class test//局部类的创建
{
float a;
float b;
};
test test;
::test=1; //由于局部类名隐藏了外部变量使用需加域区分符
class ballscore jeff; //由于全局变量int ballsocre和类(ballsocre)名称相同,隐藏了类名称,这时候定义类对象需加class前缀以区分
cout<<jeff.GetGS(10,3);
cin.get();
}

类的作用域是只指定义和相应的成员函数定义的范围,在该范围内,一个类的成员函数对同一类的数据成员具有无限制的访问权。

在类的使用中,我们经常会碰到以下三种情况:

1.类的成员函数的局部变量隐藏了类的同名成员变量,看如对上面程序的分析。

protected:
const static int gbs = 5;
const static int bbs = -3;
float gradescore;
public:
float GetGS(float goodball,float badball)
{
int gradescore=0;
ballscore::gradescore = (goodball*gbs + badball*bbs) /
(goodball + badball);
return ballscore::gradescore;
}

代码中的int gradescore就把float gradescore给隐藏了,所以要使用成员变量float gradescore的时候必须在其之前加上类名称和域区分符(::)。

2.在类定义外部非类型名隐藏了类型名称的情况,看上面代码的分析!

class ballscore
{
protected:
const static int gbs = 5;
const static int bbs = -3;
float gradescore;
public:
float GetGS(float goodball,float badball)
{
int gradescore=0;
ballscore::gradescore = (goodball*gbs + badball*bbs) /
(goodball + badball);
return ballscore::gradescore;
}
};
int ballscore=0;

代码中的全部变量int ballscore隐藏了类名称class ballscore

所以在main中如如果要定义ballscore类的对象就要在类名称前加上class关键字

class ballscore jeff;

3.类型名称隐藏了非类型名称,看对上面代码的分析

int test;
void main()
{
class test
{
float a;
float b;
};
test test;
::test=1;
class ballscore jeff;
cout<<jeff.GetGS(10,3);
cin.get();
}

在普通函数内部定义的类叫做局部类,代码中的test类就是一个局部类!

代码中的test类隐藏了全局变量test如果要操作全局变量test那么就要在test前加上域区分符号(::),进行使用!

::test=1就是对全局变量test进行了赋值操作。

我们最后说一下名字空间!

名字空间就是指某一个名字在其中必须是唯一的作用域.

如果这个定义想不明白,可以简单的说成,在一个区域内,某一个名字在里面使用必须是唯一的,不能出现重复定义的情况出现,这个区域就是名字空间!

c++规定:

1.一个名字不能同时设置为两种不同的类型

class test
{
//...
};
typedef int test;

这个就是错误的!

2.非类型名(变量名,常量名,函数名,对象名,枚举成员)不能重名.

test a;
void a();

就是错误的,因为a是一个test类的对象,它和函数a名称重名了!

3.类型与非类型不在同一个名字空间上,可以重名,即使在同一作用域内,但两者同时出现时定义类对象的时候要加上前缀class以区分类型和非类型名!

class test
{
//.....
}
int test
class test a;//利用class前坠区分,定义了一个test类的对象a

好了,到这里关于类的知识点我们已经学习完,希望大家多多练习

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号