c中引用变量的记忆?
我刚开始从基础知识中学习Cpp,当我遇到参考变量时我很困惑.
根据我所知,参考变量就像一个别名(同一个内存的另一个名称),所以在这种情况下它需要任何内存. 当我运行以下代码时: class sample_class { public: int num; //line1 int& refnum = num; //line2 } int main() { sample_class sample_object; cout<< "sample_class object size : " << sizeof(sample_object) <<endl; return 0; } 我得到的输出为:
解决方法
引用是别名,不应将其视为新变量.您无法获取其地址,也无法获得其大小.任何尝试这样做都将获得别名对象的地址或大小.实际上,大多数实现都像指针一样实现它们,但标准并不要求这样.它没有提到参考的预期大小.
来自:http://en.cppreference.com/w/cpp/language/reference
编辑:c标准为实现提供了很多余地,以便自己决定类型和类的大小,以满足每个体系结构的独特要求.在这种情况下,在类的成员之间引入填充. c中没有要求类的大小必须等于其成员大小的总和.有关该主题的更多信息,请参阅cppreference.com上的Objects and alignment. 编辑2:关于sizeof(T&)似乎仍有一些混乱. 从http://en.cppreference.com/w/cpp/language/sizeof:
表达式sizeof(T&)被视为已写入sizeof(T).这并不意味着T& S的规模.等于T的大小.只是你无法直接用sizeof获得引用的大小. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |