1

enum在函数参数中使用关键字有什么意义?没有它,它似乎做同样的事情。

enum myEnum{
  A, B, C
};

void x(myEnum e){}

void y(enum myEnum e){}

两者有区别吗?

4

1 回答 1

1

在这个函数声明中

void x(myEnum e){}

枚举 myEnum 应已声明且未隐藏。

在这个函数声明中

void y(enum myEnum e){}

这里使用了所谓的详细类型名称。如果在范围内声明了一个名为 myEnum 的变量,例如

int myEnum;

然后使用这个函数声明

void y(enum myEnum e){}

允许引用名为 myEnum 的枚举,如果没有关键字 enum 将被变量声明隐藏。

这是一个演示程序。

#include <iostream>

enum myEnum{
  A, B, C
};

void x(myEnum e){}

int myEnum; 

//  compiler error
//void y(myEnum e){} 

void y(enum myEnum e){}

int main() {
    // your code goes here
    return 0;
}

可以看出,如果取消注释,注释的函数声明将无法编译。

于 2021-09-21T21:47:30.027 回答