C++中类的虚函数和纯虚函数以及实例化
让我们来继续学习C++的一些基本语法知识,今天我们要讲解的是C++中虚函数和纯虚函数。这个也可以说是C++的精华了,因为C++的实现多态就是靠的这个。
(1).含有虚函数的类是可以被实例化的,下面来直接上代码和运行结果:
class VirtualClass{
public:
virtual void fun1()
{
printf("VirtualClass\n");
};
virtual ~VirtualClass();
};
int main(){
VirtualClass * virtualClass = new VirtualClass();
virtualClass->fun1();
return 0;
}
//打印结果如下:
A920:/system/bin # ./VirtualClass
This VirtualClass fun1
A920:/system/bin #
(2).含有纯虚函数的类是不可以被实例化的,必须被继承,才能够被实例化,下面直接上演示代码来说明:
class VirtualClass{
public:
virtual void fun1() = 0;//纯虚函数
virtual ~VirtualClass();
};
class ClassA : public VirtualClass{
public:
void fun1(){
printf("The is ClassA fun1\n");
};
virtual ~ClassA();
};
VirtualClass:: ~VirtualClass(){
}
ClassA:: ~ClassA(){
}
int main(){
//编译报错,这个非法的
VirtualClass * virtualClass = new VirtualClass();//error: cannot allocate an object of abstract type 'VirtualClass'
VirtualClass * classA = new ClassA();
classA->fun1();
return 0;
}
最后总结一把,C++中含有虚函数的类是可以实例化的,含有纯虚函数的类只能被继承,不能被实例化。