在C中从指针转换为引用

新手上路,请多包涵

我想使用 new 创建一个类的实例,但我想转换为引用以供进一步使用,而不是使用指针。目前我正在使用这一行 Foo& rf = *f; 进行显式转换,看起来有点傻。有没有更好更优雅的方法来创建引用变量并引用 new 创建的实例?

这里有一些代码来显示我在做什么,

 class Foo{
    public:
    Foo(){

    }

    void printValue() {
        cout << "This is Foo object " << endl;
    }
};

int main() {
    Foo* f = new Foo();
    Foo& rf = *f;
    rf.printValue();
    f -> printValue();
}

原文由 Lin Ma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 447
1 个回答

你可以这样写:

 Foo* foo = new Foo();
Foo& fooRef = *foo;

在一行中:

 Foo& fooRef = *new Foo();

但是,请注意,您应该稍后删除分配的内存:

 delete &fooRef;

我不建议您以这种方式编写代码,以避免内存泄漏。查看 此答案 以获取更多详细信息。尽可能选择智能指针或容器。

原文由 Liastre 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题