c++——类作用域

1.在类中定义的名称,其作用域是整个类,改名称只在此类中是已知的,类外是不可知的。 【(.)----直接成员运算符 (->)------间接成员运算符 (::)----作用域解析运算符】
2.定义一个作用域为类的常量
1>直接定义《错误,不可行》

class base 
{
private:
	const int value=8; //定义错误
	char str[value];

....

};
//因为类的声明只是描述了对象,并没有创建对象。因此,在创建对象前,将没有用于存储值得空间

俩种可行方法
2-1>在类中声明一个枚举,在类中声明的枚举作用域是整个类,因此可以用枚举为整型常量提供作用域为整个类的符号名称。

#include<iostream>

using namespace std;

class base
{
private:
	enum {Value = 23};
	int member[Value];
public:
	base();
	void show();
};

base::base()
{
	member[0]=1;
}

void base::show()
{
	cout<<"value is "<<Value<<" |  member[0] "<<member[0]<<endl;
}

int main()
{
	base str1;
	str1.show();
	return 0;
}

运行结果:
在这里插入图片描述

2-2>使用关键字static,static定义的常量将与其他静态变量存储在一起,而不是存储在对象中

#include<iostream>

using namespace std;

class base
{
private:
	static const int Value=23;
	int member[Value];
public:
	base();
	void show();
};

base::base()
{
	member[0]=1;
}

void base::show()
{
	cout<<"static value is "<<Value<<" |  member[0] "<<member[0]<<endl;
}

int main()
{
	base str1;
	str1.show();
	return 0;
}

运行结果:
在这里插入图片描述

3.作用域内枚举

1.错误示例,假设枚举dog和cat都定义了相同的枚举变量就会引起冲突
enum dog{run,sit,eat};
enum cat{run,jump,sleep};
//因为dog和cat在相同的作用域,所以发生冲突

2.解决方法提供一种新枚举,其作用域为类
enum class dog{run,sit,eat};
enum cat{run,jump,sleep};
//枚举的作用域变为类后,不同枚举中定义的枚举量就不会发生冲突
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值