本文主要是介绍作用域为类的常量(C++),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
总所周知,有一些常量在一些类中非常有用,比如Year类中12就可以用来表示月份数
当然你可以直接在全局作用域上写一个:
const int MONTH = 12;
或者之类的东西
那也是一种方法(算法上经常用),但是违反了OOP的精神(你在类外也可以调用MONTH,但是如果你本意如此,那我没话讲)
这里介绍一下方法:
1、在类中声明一个枚举
class Bakery{
private:enum{MONTH = 12};double costs[Months];...
注意,这种方式并不会创建一个数据成员。也就是说,所有对象中都不包含枚举。另外,MONTH只是一个符号名称,在作用域为整个类的代码中遇到它时,编译器用12来替换它。
此外,这里的枚举没有提供枚举名,因为这里只把枚举当作常量
2、使用关键字static
class Bakery
{
private:static const int MONTH = 12;double costs[MONTH];...
这里创建了一个常量,这个常量将与其他静态变量储存在一起,而不是储存在对象中。因为这个常量被所有的Bakery对象共享。
当然,只有这个类能用
注意,如下代码是不合法的:
class Bakery
{
private:const int MONTH = 12;double costs[MONTH];...
这是因为这里只是类的声明,在一个类的对象被创建之前,12是没有地方可以放的
类中的const变量只能在构造函数中初始化
这篇关于作用域为类的常量(C++)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!