☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

声明枚举类型的底层类型时不应使用 const 或 volatile

6.2.7 ID_uselessQualifier
目录 › next › previous

在 C++ 语言中,将 enum 或 enum class 的底层类型(underlying type)设为 const 或 volatile 是没有意义的,会被编译器忽略。

枚举类型基于整数类型实现,故称枚举类型的底层类型为整数类型。enum 的底层类型在 C 和 C++ 语言中由实现定义,C++11 引入 enum class,并与 enum 一起均可显式声明底层类型,若未显式声明,enum class 的底层类型为 int,enum 的底层类型仍由实现定义。

示例:

enum E: const unsigned int  // Non-compliant, ‘const’ is invalid
{
    e0, e1, e2
};
E e = e0;  // ‘e’ is not const

将例中 E 的底层类型声明为 const 是没有意义的,e 仍为变量。

应改为:

enum E: unsigned int  // Compliant
{
    e0, e1, e2
};
const E e = e0;  // OK, ‘e’ is const

依据

ISO/IEC 14882:2011 7.2(2) ISO/IEC 14882:2011 10.2(2)
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.