这是我的简化代码,需要您对有关执行不佳的多态性的宝贵意见。
class X
{
public:
void test();
protected:
virtual void foo() const = 0;
};
class Y : public X
{
public:
void foo(){ cout << "hello" << endl; }
};
int main()
{
X *obj = new Y();
}
我在编译时遇到以下错误。
test.cpp: In function ‘int main()’:
test.cpp:23: error: cannot allocate an object of abstract type ‘Y’
test.cpp:14: note: because the following virtual functions are pure within ‘Y’:
test.cpp:9: note: virtual void X::foo() const
答案 0 :(得分:4)
应该是
class Y : public X
{
public:
void foo() const { cout << "hello" << endl; }
};
由于
void foo() const
和
void foo()
功能不同。
答案 1 :(得分:2)
foo
函数与X :: foo
class Y : public X
{
public:
void foo() const { cout << "hello" << endl; }
};
答案 2 :(得分:1)
foo
不是const,因此您不会在X类中重载虚拟。