c++中通过虚函数实现的运行时多态性
Runtime polymorphism through virtual function in c++
这段代码给了我一个错误,它跟随基类指针来存储派生类对象。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;
}
相关文章:
- 在运行时选择父类的实现
- 如何在 constexpr 函数中实现回退运行时
- 使用本机 JNI 静态方法实现C++ Java 运行时错误
- 在C++中使用链表的堆栈实现中,访问结构体headNode成员count和top会导致运行时错误
- 与shared_ptr相比,更小的运行时数据结构和更快的代码可实现独特的_ptr
- 在运行时选择要使用的 CRTP 实现
- 合并排序的C 实现的运行时错误
- 二叉搜索树实现C++运行时错误
- 编译器优化合并了相同的函数实现,这意味着在运行时要绕过存根
- 为并发运行时实现任务本地变量
- 我的LCS实现的运行时计算
- 离散小波变换C++实现 - 运行时错误
- 在运行时更改当前未使用的类实现
- Trie 实现运行时错误
- 运行时的C++lambda实现
- 如何实现高效的C++运行时统计信息
- 我想在我的代码中实现一个双重循环链表 - 运行时错误
- 干净地实现运行时动态链接
- 快速排序实现C++运行时错误
- 虚拟函数是在C++中实现运行时多态性的唯一途径吗