作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我基本上有两个问题,可能它们是相关的,所以我将它们合二为一。
在传递给函数时,我们应该通过引用还是值传递 C++11 中的枚举类。它有点继承原始类型,但传递的是整个对象吗?因为枚举类是类型安全的;
enum class MyEnumClass : unsigned short {
Flag1 = 0,
Flag2 = 1,
Flag3 = 2,
Flag4 = 4,
};
现在假设我们有函数 sig
const char* findVal(const MyEnumClass& enumClass);
^
should this be by const ref? __|
我的另一个问题在这里 -
SHOULD IT BE BY MOVE like (MyEnumClass&&) - I am still learning/understanding
move semantics and rvalue so I am not sure if move semantics are only for
constructors or can be for member or static funcs -
最佳答案
它不是继承基本类型,而是告诉实现使用指定类型(unsigned short
)作为枚举器的基础类型。
您可以简单地将枚举类对象视为任何其他类对象,并在将其传递给函数时应用相同的规则。
move 语义是一种语言运行时性能增强功能,它利用从右值 move 的机会,而不是应用性能密集型的复制语义。右值引用和 move 语义不仅限于 move 构造函数和 move 赋值运算符,它们还可以与其他函数一起使用。如果您有可以利用此优化的场景,那么利用它们是非常好的。
关于c++ - 通过引用或值枚举类 C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17439672/
我是一名优秀的程序员,十分优秀!