转自https://blog.csdn.net/weixin_36571185/article/details/89523514
一、对比图表
JAVA | C++ |
---|---|
普通函数 | 虚函数,用Virtual标识 |
抽象函数abstract | 纯虚函数,用Virtual标识 ,且函数=0 |
抽象类 | 抽象类,和java概念一样 |
interface接口 | 纯虚类,所有的函数都是纯虚函数。纯虚函数和虚函数的区别在于前者不包含定义,而后者包含函数体。 |
二、C++虚函数与JAVA中抽象函数比较
1:java中没虚函数概念。
2:C++中有虚函数概念,用virtual 关键字表示,每个类都会有一个虚函数表,该虚函数表首先会从父类中继承得到父类的虚函数表, 如果子类中重写了父类的虚函数(不管重写后的函数是否为虚函数),要调用哪个虚函数,是根据当前实际的对象来判断的(不管指针所属类型是否为当前类,有可 能是父类型),指针当前指向的是哪种类型的对象,就调用哪个类型中类定义的虚函数。每个类只有一张虚拟函数表,所有的对象共用这张表。即也就是说,java类中的普通函数就是C++中的虚函数。
ps:C++