首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用const引用模拟只读公共类成员

使用const引用模拟只读公共类成员
EN

Stack Overflow用户
提问于 2013-02-06 18:15:19
回答 1查看 255关注 0票数 1

我在谷歌上搜索“C++中的只读公共类成员”时,我发现了public const references to private members的主题。

代码语言:javascript
复制
class Planet
{
private:
    int64_t mass_;
public:
    Planet(int64_t mass);

    const int64_t & Mass = mass_;    // I'm using C++11
};

我更喜欢这个概念,而不是内联的const函数,因为语法是糖的:您可以编写myPlanet.Mass,而不是一个看起来比较冗长的myPlanet.GetMass()。然而,我发现这是以额外的引用变量的内存为代价的。我无法理解的是,为什么编译器不优化这个引用所使用的空间,因为它指向的对象永远不会改变,并且在编译时所指向的对象是已知的(多亏了新的c++11语法)。我和gcc一起尝试了各种优化设置,但都没有效果。

所以我有两个疑问:

  1. 为什么编译器不优化引用呢?
  2. 是否有任何方法迫使编译器进行此优化?或者用一些非标准的__attribute__或者新的C++11 [[attribute]]什么的?

如有任何帮助,我们将不胜感激:)

EN

回答 1

Stack Overflow用户

发布于 2013-02-07 08:42:39

编译器只对其作者进行优化。

  1. 曾想过
  2. 被认为实际上是有用的,到了值得努力去实现它们的地步。

您的方法非常不寻常,可能不是1,也肯定不是2。Getters只是更灵活,没有任何空间开销,如果它们是直接在类中定义的,所有C++编译器都可以内联它们(有些情况下它们不会,比如当您想要维护共享库ABI兼容性时,但是您可以完全控制它们)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14735977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档