首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能定义一个引用变量不占用额外存储空间的类?

是否有可能定义一个引用变量不占用额外存储空间的类?
EN

Stack Overflow用户
提问于 2021-05-27 05:13:48
回答 1查看 53关注 0票数 2

如果引用的对象在编译时是已知的,C++可以选择不为引用变量分配存储空间。这里的其他问题已经注意到,对常量的引用不占用任何存储空间。

那么,在下面这种情况下,C++为什么不执行明显的优化,不为引用变量分配存储空间呢?rg只能引用glob,那么为什么需要为指针分配存储空间呢?

代码语言:javascript
复制
struct nowtref 
{
    int x;
};

int glob;

class withref
{
    int x;
    int& rg{glob};
};

int main(int argc, char* argv[])
{
    printf("sizeof(withref) = %lu\n", sizeof(withref));
    printf("sizeof(nowtref) = %lu\n", sizeof(nowtref));
}

运行时,此程序将打印:

代码语言:javascript
复制
sizeof(withref) = 16
sizeof(nowtref) = 4

在一个不占用存储空间的类中有没有可能有一个引用?

EN

回答 1

Stack Overflow用户

发布于 2021-05-27 05:15:28

代码语言:javascript
复制
int& rg{glob};

这仅定义此引用的默认值。使用聚合初始化,可以将此引用初始化为引用其他对象。因此,这个引用不能(简单地)优化掉。

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

https://stackoverflow.com/questions/67712803

复制
相关文章

相似问题

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