C++ - 将枚举类作为值或const引用传递是否更好?

Aut*_*zei 6 c++ oop enums

因为它被称为'类',我通常会将它作为const引用传递给它,但是如果我使用普通的枚举,它没有任何区别对吗?如果我将枚举类作为value/const ref传递,那么它会有所不同吗?此外,类型是否重要?例如,枚举类:int

use*_*670 13

enum class保持一个整数值就像一个常规值,enum所以你可以安全地传递值,没有任何开销.请注意,编译器有时可以通过引用来优化传递,也可以使用pass by value替换它.但是,当不应用这样的优化时,通过引用传递可能导致一些开销.


Bat*_*eba 5

作为一个非常广泛的经验法则,将普通的旧数据类型作为值传递,并将类实例作为const引用传递。

这条规则也有例外;事实上,现在的流行趋势在构建复制构造函数时喜欢依赖按值传递,然后是移动语义

对于enum classC++11的新东西,按值传递它(毕竟它只包含一个整数类型)并信任编译器进行优化。

如果您有任何疑问,请分析任何性能差异。