DJ    2023-10-19 09:17 采纳率: 33.3%
浏览 3

关于c++指针寻址的问题

谁可以解释清楚下列代码,为什么输出是这些或者为什么不会崩溃

#include <iostream>
using namespace std;
class A
{
public:
    A() { };
    virtual void funcA()
    {
        std::cout << "funcA" << endl;
    };
};

class B : public A
{
public:
    int num;
    B() {num = 10; };

    virtual void funcA() override
    {
        std::cout << "funcA in B" << endl;
    };
    void funcB()
    {
        num = 100;
        std::cout << "funcB" << endl;
    }
    void funcC()
    {
        std::cout << "funcC" << endl;
        std::cout << num << endl;
    }
};


int main(int argc, char* argv[])
{
    A* pA = new A;
    B* pB = (B*)(pA);
    pB->funcA();
    pB->funcB();
    pB->funcC();
    return 1;
}

输出是:
funcA
funcB
funcC
100

  • 写回答

2条回答 默认 最新

  • 赵4老师 2023-10-19 09:49
    关注

    代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
    提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
    单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月19日

悬赏问题

  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit