加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 通过值或引用将枚举传递给函数?

发布时间:2020-12-16 06:50:58 所属栏目:百科 来源:网络整理
导读:参见英文答案 C++: Is it better to pass an enum as a value or as a const reference?????????????????????????????????????5个 纠正我,如果我错了,但你按值传递整数和其他基本数据类型的原因是因为它们占用的内存太小,所以制作该数据类型的指针变量(可能
参见英文答案 > C++: Is it better to pass an enum as a value or as a const reference?????????????????????????????????????5个
纠正我,如果我错了,但你按值传递整数和其他基本数据类型的原因是因为它们占用的内存太小,所以制作该数据类型的指针变量(可能是至少与数据类型相同的大小).

这就是为什么我总是通过值向函数传递整数和其他基本类型,而其他(更大)数据类型由const引用或const指针传递.我抓住了这个吗?

现在我已经看到很多API将枚举类型作为const引用传递,如下所示:

enum FileOptions { ReadOnly,ReadWrite,WriteOnly };
void processFile(const FileOptions &options);

据我所知,枚举通常由编译器解释为普通整数,为什么它们通过引用传递?是否从开发人员那里抽象出数据类型,所以他不会将FileOptions视为整数? (尽管如此).

解决方法

我能看到的唯一优势是,如果你以后决定创建一个具有扩展功能的类,你可以在不改变代码的情况下有效地传递它.

如果它是基本类型的const引用,那么任何像样的优化器都不关心引用,并且在两种情况下都创建相同的代码.

另一个结果可能是,如果引用是某个其他变量并且它被另一个线程更改,它甚至可以在函数过程中更改它的值(即使它表示它是常量),我认为,这不是真的很可取.在这种情况下,它将在很大程度上取决于优化在该方法的给定分支中使用的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读