前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >类作用域

类作用域

作者头像
用户7272142
发布2023-10-11 21:20:10
1270
发布2023-10-11 21:20:10
举报
文章被收录于专栏:Republic博客Republic博客

在类中定义的名称(如类数据成员和类成员函数名)的作用域都为整个类,作用域为整个类的名称只在该类中是已知的,在类外是不可知的。因此,可以在不同类中使用相同类成员名而不会引起冲突。例如,Stock类的share成员不同于JobRide的share成员,另外,类作用域不能直接从外部访问类的成员,公有函数也是如此。也就是说,要调用共有函数,必须通过对象: 定义成员函数时,必须使用作用域解析运算符

代码语言:javascript
复制
void Socket::update()
{
....
}

总之,在类声明或成员函数定义中,可以使用未修饰的成员的名称,构造函数在被调用时,才可以被识别,因为他的名称和类名相同

代码语言:javascript
复制
class IK{
private:
int fuss;
public:
IK(int f = 9)
{
fuss = f;
}
void ViewIK() const;
};
void IK::ViewIK() const
{
cout<<fuss<<endl;
}
int main()
{
IK*pik = new IK;
IK ee = IK(8);
ee.ViewIK();
pik->ViewIK();
}

作用域为类的常量

有时候使符号常量的作用域为类很有用。由于常量对于所有对象来说都是相同的,因此创建一个由所有对象共享的常量是很有必要的。

代码语言:javascript
复制
class Bakery
{
private:
const int Months = 12;
double dosts[Months]
}

这样可以吗?是不行的,因为目前我们是在声明,声明只是描述,并不会给成员赋值,虽然表面上我们赋值了,但没有创建对象就没有存储空间,所以数组也并没有声明 介绍两种作用域类内的方法

类中声明一个枚举

代码语言:javascript
复制
class Bakery
{
private:
enum {Months = 12};
double dosts[Months];
}

枚举并不会创建数据成员,所有对象都不会包含枚举,而且这只是一个符号常量,在作用域为整个类的代码遇到他时,编译器会用12替换,所谓符号常量,就是用一个字符串来替换程序中出现的标识符,和宏定义类似,内存中没有以符号常量命名的存储空间。

static static申明的常量也没有放在对象的空间中,他与其他静态变量存放在一起,而不是在对象中,可以被所有类创建的对象共享。

作用域内枚举

传统的枚举,如果我们枚举量一样的话可能发生冲突

代码语言:javascript
复制
enum egg{Small,Medium,Large,Jumbo};
enum t_shirt{Small,Medium,Large,Xlarge};

将无法通过编译,因为egg Small和t_shirt Small位于相同的作用域内,它们将发生冲突。C++++11提供了一种新枚举,作用域为类,如:

代码语言:javascript
复制
enum class  egg{Small,Medium,Large,Jumbo};
enum class  t_shirt{Small,Medium,Large,Xlarge};

也可以用strut代替class 无论哪种方式,都需要使用枚举名来限定枚举量

egg choice = egg::Large; //the Large enumerator of the egg enum

t_shirt Floyd = t_shirt::Large; //the Large enumerator of the t_shirt enum

代码语言:javascript
复制
枚举量的作用域为类时,就不会发生之前的冲突了。
C++11常规枚举将会被默认转为整型,但类内枚举不能隐式转换为整型。但是我们看可以显式转换(强制)

int frodo = int(t_shirt::Small);

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作用域为类的常量
  • 作用域内枚举
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档