C++判斷兩個指針指向的對象是否相同


1、例子

class BaseA
{
public:
    int a;
};
 
class BaseB
{
public:
    double b;
};
 
class Derived : public BaseA, public BaseB
{
};
 
int main(int argc, char const *argv[])
{
    Derived derivd;
    Derived* pd = &derivd;
    BaseB* pb = &derivd;
    printf("pb = %p\n", pb);
    printf("pd = %p\n", pd);
    if (pb == pd)
    {
        printf("pb == pd\n");
    }
    else
    {
        printf("pb != pd\n");
    }
}

打印:
pb = 0028FEE0

pd = 0028FED8
pb == pd
2、結論
雖然兩個指針的值不同,但是編譯器認為它們還是相等的,因為它們指向同一個對象。
所以直接用if(p1 == p2)判斷即可
 
 
 
 
參考:https://www.cnblogs.com/liyuan989/p/4246836.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM