gpt4 book ai didi

c++ - 以后可以初始化引用变量吗?

转载 作者:太空狗 更新时间:2023-10-29 20:03:53 24 4
gpt4 key购买 nike

最好用一个例子来解释:

Class banana {
int &yumminess;
banana::banana() {
//load up a memory mapped file, create a view
//the yumminess value is the first thing in the view so
yumminess = *((int*)view);
}
}

但这行不通:/当我声明“yumminess”引用变量时,我无法知道 View 的位置。现在我只是使用一个指针并一直取消引用它,有什么方法可以给我的类(class)带来一点额外的便利吗?

最佳答案

简而言之:不,这是故意不可能的。

三思而后行:未初始化的引用之类的东西不可能真正存在;这根本没有意义。
因此,需要在构造封闭类时或在静态初始化时设置它们。

对于这种情况,您需要使用指针。


此外请注意

 yumminess = (int*)view;

无论如何都会被错误地转换(指向指针)。


"Right now i just use a pointer and dereference it all the time ..."

编写适当的成员函数来访问引用也很容易克服这一点。

int* yumminess;

// ...

int& yumminessRef() {
if(!yumminess) {
throw some_appropriate_exception("`yumminess` not initialized properly.");
}
return *yumminess;
}

关于c++ - 以后可以初始化引用变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com