我对通过引用相当陌生,我必须确保我正确理解这一点。我必须将我所有的堆内存转换为堆栈内存,因为我的教授这么说,而且我被两个概念困住了。
在类中存储引用的最佳方法是什么?我最初将成员对象作为非指针,但注意到当对象(不是成员对象)从堆栈中弹出时,将在成员变量上调用解构函数。这让我觉得这是一个副本,而不是真正的参考。
这是我最初的一个例子:
class B
{
public:
B();
~B();
};
class A
{
private:
B b;
public:
A();
~A();
setB(B& bVar);
};
void A::setB(B& bVar)
{
b = bVar;
}
我的解决方案是将其更改为指针,因此它不会调用解构器,但我不确定这是否是正确的方法。这是我的解决方案:
class B
{
public:
B();
~B();
};
class A
{
private:
B* b;
public:
A();
~A();
setB(B& bVar);
};
void A::setB(B& bVar)
{
b = &bVar;
}
我的第二个问题有点相关。我不确定当您遇到以下情况时会发生什么:
object1 = object2&.
object1 是一个副本还是实际上是 object2 的另一个标识符?