Rub*_*ens 4 c++ compiler-construction variables reference
从这个问题,因此,从标准(ISO C++ - 03):
未指定参考是否需要存储(3.7).
在该线程的一些答案中,据说引用在内部具有相同的指针结构,因此具有相同的大小(32/64位).
我挣扎把握的是:如何将一个参考来不要求存储?
任何举例说明这一点的示例代码都将非常感激.
编辑:来自@ JohannesSchaub-litb评论,有什么类似的,如果我没有使用const &,或者如果我使用const &默认值,它需要分配?在某种程度上,在我看来,根本不应该为引用分配 - 当然,除非涉及明确的分配,例如:
A& new_reference(*(new A())); // Only A() instance would be allocated,
// not the new_reference itself
Run Code Online (Sandbox Code Playgroud)
有这样的情况吗?
采取简单的方法:
int foo() {
int x = 5;
int& r = x;
r = 10;
return x;
}
Run Code Online (Sandbox Code Playgroud)
实现可以使用指向x幕后的指针来实现该引用,但是没有理由这样做.它也可以将代码转换为等效形式:
int foo() {
int x = 10
return x;
}
Run Code Online (Sandbox Code Playgroud)
然后不需要任何指针.编译器可以直接将其烘焙到r相同的可执行文件中x,而无需存储和取消引用指向的指针x.
关键是,引用是否需要任何存储是一个您不需要关心的实现细节.
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |