gpt4 book ai didi

c++ - 为什么引用比指针更安全?

转载 作者:太空狗 更新时间:2023-10-29 21:13:11 25 4
gpt4 key购买 nike

<分区>

嘿,我想了解指针和引用在使用安全性方面的区别,很多人说引用比指针更安全,而且它不能为空。但对于以下代码,它表明引用可能会产生运行时错误,但指针不会:

class A {
public:
A(): mAi(0) {}
void ff() {std::cout << "This is A" << std::endl;}
int mAi;
};

class B {
public:
B() : mBi(0), mAp(NULL) {}
A* getA() const { return mAp; }
void ff(){std::cout << "This is B" << std::endl;}
int mBi;
A* mAp;
};

int main()
{
B* b = new B();
/// Reference part
A& rA = *b->getA();
rA.ff();
std::cout << rA.mAi << std::endl;
/// Pointer part
A* pA = b->getA();
if (NULL != pA)
{
pA->ff();
std::cout << pA->mAi << std::endl;
}
}

此代码会因“引用部分”而崩溃,但不会因“指针部分”而崩溃。我的问题是:

  1. 为什么我们总是说引用比指针更安全,如果它们可能无效(如在前面的代码中)并且我们无法检查它们的无效性?

  2. 使用 Pointer 或 Reference 在 RAM 或 CPU 消耗方面有什么不同吗? (如果可以的话,重构大代码以使用引用而不是指针是否值得?)

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