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原文链接: https://www.cnblogs.com/judes/p/14312173.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/207580
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!