我想学习C++中的继承。我写了一些代码来学习虚函数。C++继承虚函数
#include <iostream>
using namespace std;
class A {
int a;
public:
A() {}
virtual int get_count() const = 0;
int get_A() { return a; }
};
class B : public A{
public:
int b;
B() {}
B(A& base)
: b(base.get_count()) {}
virtual int get_count() const { return 10; }
};
void func(A& base) {
B derived(base);
cout << derived.b;
}
int main() {
A base;
B derived;
func(derived);
}
当我尝试编译我得到这个错误:
test_inheritance_vir.cpp: In function ‘int main()’:
test_inheritance_vir.cpp:32: error: cannot declare variable ‘base’ to be of abstract type ‘A’
test_inheritance_vir.cpp:5: note: because the following virtual functions are pure within ‘A’:
test_inheritance_vir.cpp:10: note: virtual int A::get_count() const
能否请你告诉我什么,我做错了什么?
这不是问题所在。他试图创建一个实例作为主要的第一个变量,这是逻辑错误。应该是A *或A&和派生类的实例。 – SOReader
如果他正在创建实例,因为他希望**? :)如果他想 - 他可以做到。 –
如果是这样,它不应该是纯虚拟的。这是一个设计问题 – SOReader