gpt4 book ai didi

c++ - 将指针与引用进行比较

转载 作者:行者123 更新时间:2023-12-02 17:54:00 26 4
gpt4 key购买 nike

我正在重构遗留代码。我必须将指针与引用进行比较是否相等(以检查两个对象是否相等)。 This question SO 是通过比较地址来实现的。如果我对指针和引用执行相同的操作,如下所示,会出现任何问题(有任何异常(exception)情况吗?)。到目前为止,在我的测试中,它工作正常。请指教

#include <stdio.h>
#include <iostream>

class MemberData
{
//Huge class with many data members
};

int main()
{
MemberData x ;
const MemberData& y = x;
MemberData *ptr= &x;


if(std::addressof(*ptr)==std::addressof(y))
{
std::cout << "Both are equal" << "\n";
}

return 0;
}

最佳答案

std::addressof(*ptr) 似乎是多余的。如果你有一个指向该对象的指针,并且需要一个指向该对象的指针,那么为什么要间接通过该指针,然后获取指向所指向的对象的指针呢? ptr == std::addressof(y) 应该同样可以工作。只要你想比较地址的相等性...

(To check whether both objects are equal)

比较地址的相等性就是比较同一性,即它们是否是同一个对象。要比较对象的相等性,通常会比较它们的值。例如,以下变量不是同一个对象,因此不具有相同的地址,但它们的值相等(假设复制构造函数正常):

MemberData x;
MemberData y = x;

关于c++ - 将指针与引用进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59098535/

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