关于C++虚函数的疑问

class Test1
{
public:
    void f1()
    {
        std::cout << "Test1::f1()" << std::endl;
    }
    virtual void f2()
    {
        std::cout << "Test2::f2()" << std::endl;
    }
    virtual void f3()
    {
        std::cout << "Test1::f3()" << std::endl;
    }
};
class Test2
{
public:
    virtual void f1()
    {
        std::cout << "Test2::f1()" << std::endl;
    }
    virtual void f2()
    {
        std::cout << "Test2::f2()" << std::endl;
    }
};
int main()
{

    Test2 t2;

    Test1 *t1 = (Test1 *)&t2;
    t1->f1(); //没什么好解释的,该类的指针,调用该类的函数,所以输出Test1::f1()
    t1->f2();    
    t1->f3();
    return 0;
}

对于输出结果,我希望有人能为我解一下心中的疑惑,不胜感激。

你这都没用继承,这么用会出错的。两个没有父子关系的类指针不能互相赋值

他们没继承关系,这样把2个毫无关系的类强转,得出自然不是你想要的结果

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632