在虚函数的声明的参数列表之后加上“=0”就将函数变成了纯虚函数

2014-11-24 02:21:08 · 作者: · 浏览: 1

虚函数:在虚函数的声明的参数列表之后加上“=0”就将函数变成了纯虚函数,如:


[cpp]
class Base
{
virtual void function()=0;
}

class Base
{
virtual void function()=0;
}我们不需要为纯虚函数Base::function()提供任何定义,那些声明了纯虚函数的类就是抽象类。任何试图创建一个抽象类对象的操作都会导致编译器错误。

如果一个类派生子Base并且重写了Base::function()函数,它就成为了具体的类了。

[cpp]
class Derived :public Basae
{
void function();
}

class Derived :public Basae
{
void function();
}
我们通常将抽象类用作接口声明,这时我们不需要为该接口声明一个完整的实现,该接口描述了所有派生自该类的对象都应该支持的操作;派生类必须实现这些抽象操作。

[cpp]
class Base
{
public:
virtual void print()=0;
};
class Derived :public Base
{
public:
virtual void print()
{
cout<<"Derived::Derived()\n";
}
~Derived()
{
print();
}
};
int main()
{
Derived D;
Base* ptr=&D;
D.print();
}

class Base
{
public:
virtual void print()=0;
};
class Derived :public Base
{
public:
virtual void print()
{
cout<<"Derived::Derived()\n";
}
~Derived()
{
print();
}
};
int main()
{
Derived D;
Base* ptr=&D;
D.print();
}运行结果:
Derived::Derived()

Derived::Derived()


第一个Derived::Derived()是通过D直接调用print()时所产生的输出,第二个是在程序结束时调用~Derived()时产生的输出。

虽然我们不可以直接创建抽象类的对象了,但是仍然可以使用指向Base的指针和引用。

比如: Base* ptr= &D;