函数参数中的C++枚举关键字[重复]

5t7ly7z5  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(61)

此问题在此处已有答案

When should I use an elaborated type specifier?(5个答案)
两年前关闭。
在函数参数中使用enum关键字的意义是什么?没有它似乎也是一样。

enum myEnum{
  A, B, C
};

void x(myEnum e){}

void y(enum myEnum e){}

字符串
这两者之间有什么区别吗?

wmvff8tz

wmvff8tz1#

在此函数声明中,

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;
}


如图所示,如果取消注解,注解的函数声明将无法编译。

相关问题