gpt4 book ai didi

c++ - 使用引用而不是指针有哪些缺点?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:31 25 4
gpt4 key购买 nike

给定“A”类存在并且是正确的。使用对“A”的引用而不是类“B”中的指针会产生一些负面结果。即:

// In Declaration File
class A;

class B
{
public:
B();
~B();
private:
A& a;
};

// In Definition File
B::B(): a(* new A())
{}

B::~B()
{
delete &a;
}

为了进一步正确“B”省略了额外的代码,例如复制构造函数和赋值运算符,只是想演示问题的概念。

最佳答案

直接的限制是:

  • 您不能更改引用的值。您可以更改 A它指的是,但您不能重新分配或重新分配 aB期间的一生。
  • a绝不能是 0 .

因此:

  • 该对象不可分配。
  • B不应该是复制构造的,除非你教A及其子类型以正确克隆。
  • B如果存储为值,将不是作为集合类型元素的良好候选者。 B 的 vector s 可能最容易实现为 std::vector<B*> ,这可能会带来更多的复杂性(或简化,具体取决于您的设计)。

根据您的需要,这些可能是好东西。

注意事项:

  • 切片是另一个需要注意的问题if a是可分配的,分配可在 B 内到达.

关于c++ - 使用引用而不是指针有哪些缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8071022/

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