gpt4 book ai didi

c++ - 使用 Static_Cast 派生类指针指向基类对象

转载 作者:行者123 更新时间:2023-11-28 04:22:08 24 4
gpt4 key购买 nike

<分区>

我有下面的一段代码,其中有一个基类和一个派生类。基类和派生类都有一个共享相同名称的函数成员。在 main() 中,我将基类对象类型转换为派生类指针并尝试调用该函数。令我惊讶的是,它正在调用派生类函数成员。据我所知,基类对象不会有关于派生类对象的任何信息。那么,为什么我的派生类指针仍然可以访问派生成员函数呢?

在向上转型的情况下,我确实理解派生类对象将具有基类的内容,这就是为什么指向派生类对象的基类指针将按预期工作。

即使我有一个指向基类对象的派生类指针(没有派生类的信息),有人能帮我理解派生类成员函数是如何被调用的吗?

#include<iostream>
using namespace std;


class base
{

public:
void b()
{
cout << "base";
}
};
class derived:public base
{
public:
void b()
{
cout << "derived";
}
};

int main()
{
base b;
derived * d1;
d1 =static_cast<derived*>(&b);
d1->b();
return 0;
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com