c++中通过虚函数实现的运行时多态性

Runtime polymorphism through virtual function in c++

本文关键字:实现 运行时 多态性 函数 c++      更新时间:2023-10-16

这段代码给了我一个错误,它跟随基类指针来存储派生类对象。g++编译器给出如下错误"错误:请求成员' print '在' obj '中,它是非类类型' base* ' "

#include<iostream>
using namespace std;
class base
{
public:
    void print()
    {
        cout<<"Inside Base n";
    }
};
class derived : public base
{
public:
    void print()
    {
        cout<<"Inside Derived n";
    }
};
int main()
{
    base *obj;
    derived obj2;
    obj = &obj2;
    obj.print();
    return 0;
}

语法错误。还要注意,即使我将代码从obj.print()更改为obj->print(),它也将引用基类中的print()。

#include<iostream>
using namespace std;
class base
{
public:
    void print()
    {
        cout<<"Inside Base n";
    }
};
class derived : public base
{
public:
    void print()
    {
        cout<<"Inside Derived n";
    }
};
int main()
{
    base *obj;
    derived obj2;
    obj = &obj2;
    obj->print();
    return 0;
}