【发布时间】:2023-03-23 00:49:01
【问题描述】:
当我学习 C++ 时,有人告诉我,如果你想让多个类引用同一个对象,你应该给两个类都一个指向该对象的指针。在现代 C++ 中,我可能会将其解释为作为 unique_ptr 的对象和持有非拥有原始指针的类。
最近,我的导师建议您只应在计划将存储指向不同的对象或在某个时候为空时才使用指针。相反,您应该将引用存储在类中。
引用成员变量是我以前从未见过的东西,所以我一直在寻找有关问题的建议......这很有意义......你是说这个引用被假定为永远不会为空...我猜你担心的是你不能 /check/ 为空。它必须是你的类的不变量......
这如何适用于使用多态性的引用?
更新: 我选择的答案很好地涵盖了我的问题,但我想我会为未来的读者澄清一下。我真正想要的是了解使用引用而不是指针作为类成员的后果。我意识到这个问题的措辞听起来更像是我在寻找关于这个想法的意见。
【问题讨论】:
-
是的,您不能检查 null,但引用也永远不能为 null(除非您非常努力地让它成为 null)。您必须考虑的一件事是引用数据成员必须由类构造函数初始化。你有更具体的问题吗?
-
你应该更具体一些,这个问题很开放。我想说你的导师说的话很有道理,如果你不打算改变“指针/参考”指向/指的地方,你应该使用参考。这样你就可以在编译时捕获 null 问题。
-
我一般使用成员 T& 来表示 this 对象的生命周期内的永久关系,并在引用的对象可更改/可为空时使用 T*。
-
“可更改”和“可空”是两个不同的东西。 “使用指针或引用”的困境涉及“可空性”。对于“可变性”,我们使用“const”。
标签: c++ class pointers reference