假设有一个基类B和派生类D1,D2,D3。
B* b;
D1 d1;
D2 d2;
D2 *pd2 = &d2;
D3 d3;
//more code placing valid data on variables
可以在代码中的某处说b = &d1
或b = pd2
。
现在是否可以将b与指针d1,d2和d3进行比较,以获得没有动态转换的指针相等性?也就是说,我可以这样做:
if (b == &d1)
{
//do something
}
答案 0 :(得分:1)
if (b == &d1)
将简单地比较指针地址,除非已经创建了基于对象中存储的信息进行比较的运算符重载。
作为旁注,除非您在一个或两个对象中正确地重载操作符,否则您无法根据代码执行b = pd2
,或者使用b = &pd2
答案 1 :(得分:1)
现在可以将b与d1,d2和d3的指针进行比较,以获得没有动态转换的指针相等吗?
是
if (b == pd2)
可以很好地查看b
和pd2
是否指向同一个对象。