将指针与基类型与派生类型的指针进行比较

时间:2013-10-12 11:10:24

标签: c++ pointers polymorphism

假设有一个基类B和派生类D1,D2,D3。

B* b;
D1 d1;
D2 d2;
D2 *pd2 = &d2;
D3 d3;
//more code placing valid data on variables

可以在代码中的某处说b = &d1b = pd2。 现在是否可以将b与指针d1,d2和d3进行比较,以获得没有动态转换的指针相等性?也就是说,我可以这样做:

if (b == &d1)
{
//do something
}

2 个答案:

答案 0 :(得分:1)

if (b == &d1)将简单地比较指针地址,除非已经创建了基于对象中存储的信息进行比较的运算符重载。

作为旁注,除非您在一个或两个对象中正确地重载操作符,否则您无法根据代码执行b = pd2,或者使用b = &pd2

答案 1 :(得分:1)

  

现在可以将b与d1,d2和d3的指针进行比较,以获得没有动态转换的指针相等吗?

if (b == pd2)可以很好地查看bpd2是否指向同一个对象。