C++指针比较的含义

这个问题我是在《C++必知必会》条款28里面看到的。C++指针比较的不是地址,而是对象同一性问题。即指针地址可以不同,而比较的结果却相同,因为它们指向的是同一个对象。这个问题用多重继承比较直观:

   1: #include 
   
   
   2:  
   3: using namespace std;
   4:  
   5: class A {
   6:     int a;
   7: };
   8:  
   9: class B {
  10:     int b;
  11: };
  12:  
  13: class C: public B, public A {
  14:     int c;
  15: };
  16:  
  17: int main()
  18: {
  19:     C *pc = new C();
  20:     A *pa = pc;
  21:     B *pb = pc;
  22:     if (pc == pa)
  23:     {
  24:         cout << pa << " = " << pc << endl;
  25:     }
  26:     if (pc == pb)
  27:     {
  28:         cout << pb << " = " << pc << endl;
  29:     }
  30: }

在我机器上运行的结果如下:

0043EF94 = 0043EF90
0043EF90 = 0043EF90
请按任意键继续. . .

由此可以看出,指针比较的不是地址,而是对象同一性。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值