4

假设有一个基类 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
}

?

4

2 回答 2

2

现在是否可以在没有动态转换的情况下将 b 与指向 d1、d2 和 d3 的指针进行比较以获得指针的相等性?

是的。

if (b == pd2)b查看是否并pd2指向同一个对象是完全可以的。

于 2013-10-12T11:15:38.440 回答
1

if (b == &d1)将简单地比较指针地址,除非创建了一个运算符重载,它根据存储在对象中的信息进行比较。

作为旁注,您不能b = pd2根据您的代码执行操作,除非您在一个或两个对象中正确地重载运算符,或者改为使用b = &pd2

于 2013-10-12T11:12:18.623 回答