技巧知识点
类是用户定义的类型,对象是类的实例
1.有时候,使符号常量的作用域为类很有用,例如,类声明可能使用字面值30来指定数组的长度,但类中的数据成员只描述对象的形式,并没有创建对象
a. 可以在类中声明一个枚举,使一个常量作用于类的作用域,
class tom
{
private:
enum {months = 12};
double mon [months];
};
传统的枚举方法中,两个枚举定义中的枚举量可能发生冲突
例如:
enum egg {small,medium,big};
enum fish {small,medium,bih};
有一种方法是在作用域内枚举
enum class egg {small,medium,big};
enum class {small,medium,bih};
也可以用struct代替class
egg ch = egg::big;
fish pd = fish::big;
这样就不会发生冲突了
注意事项:
将enum赋值于int 变量或用于比较表达式时,常规枚举变量自动转化为整型
但作用域每枚举不能隐式的转化为整型
enum egg {small, medium, big};
enum class fish {small, medium, big};
egg ch = medium;
fish pd = fish::medium;
int km = one;
int ls = rolf;//false,不发生隐式的类型转换
if(km < td)
{
std::cout << "converted to int before comparison" << std::endl;
}
if(ls < td)
{
std::cout << "not allowed" << std::endl;
}
特殊情况下,枚举结构的长度可发生改变
enum class : short pizza {small, medium, big};
class : 将底层类型指定为short
b.使用关键字 static
class tom
{
private:
static const int months = 12;
double mon [months];
};
该常量与其他静态变量存储在一起,而不是存储在对象中