C++面向对象编程入门:类(class)
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: 代码中的int gradescore就把float gradescore给隐藏了,所以要使用成员变量float gradescore的时候必须在其之前加上类名称和域区分符(::)。 2.在类定义外部非类型名隐藏了类型名称的情况,看上面代码的分析! class ballscore 代码中的全部变量int ballscore隐藏了类名称class ballscore 所以在main中如如果要定义ballscore类的对象就要在类名称前加上class关键字 class ballscore jeff; 3.类型名称隐藏了非类型名称,看对上面代码的分析 int test; 在普通函数内部定义的类叫做局部类,代码中的test类就是一个局部类! 代码中的test类隐藏了全局变量test如果要操作全局变量test那么就要在test前加上域区分符号(::),进行使用! ::test=1就是对全局变量test进行了赋值操作。 我们最后说一下名字空间! 名字空间就是指某一个名字在其中必须是唯一的作用域. 如果这个定义想不明白,可以简单的说成,在一个区域内,某一个名字在里面使用必须是唯一的,不能出现重复定义的情况出现,这个区域就是名字空间! c++规定: 1.一个名字不能同时设置为两种不同的类型
这个就是错误的! 2.非类型名(变量名,常量名,函数名,对象名,枚举成员)不能重名.
就是错误的,因为a是一个test类的对象,它和函数a名称重名了! 3.类型与非类型不在同一个名字空间上,可以重名,即使在同一作用域内,但两者同时出现时定义类对象的时候要加上前缀class以区分类型和非类型名!
好了,到这里关于类的知识点我们已经学习完,希望大家多多练习 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |