栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++:存在虚函数的父类和派生类的指针指向的内存探讨

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++:存在虚函数的父类和派生类的指针指向的内存探讨

本文讨论下面这种情况,指针指向的东西是啥:
(如果base是父类,Derived是派生类,那么base* (Derived)这种指针究竟指向了啥?
1.定义代码:

#include "iostream"
using namespace std;


class base1{
public:
    base1():base1_1(11){}
    int base1_1;
    virtual void base1_fun1(){
        cout<<"base_fun1"< 

2.main代码:

int main(){
    Derived d1;
    base1* ptr1 = &d1;
    base2* ptr2 = &d1;
    base3* ptr3 = &d1;
    Derived* ptr4 = &d1;

    ptr1->base1_fun1();//1

    ptr3->base3_fun1();

    ptr4->base1_fun1();
    ptr4->base3_fun1();
    ptr4->derived_fun1();

    cout<<&d1<<" ";
    cout< 

3.结果

4.结论

Derived d1;
base1* ptr1 = &d1;
base2* ptr2 = &d1;
base3* ptr3 = &d1;
Derived* ptr4 = &d1;

我觉得种种迹象表明
base1指针指向派生类d1的话,实际上是只会看到base1的虚函数,也只会看到base1的构造函数出来的东西。
Derived指针的话,啥都能看到。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号