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

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

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指针的话,啥都能看到。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5611512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存