默认的虚拟行为如何在C++和java中不同?

方法的默认虚拟行为与C++和java相反。

null

在C++中,类成员方法默认为非虚方法。它们可以通过使用 事实上的 关键词。例如 Base::show() 在以下程序和程序打印中是非虚拟的 “Base::show()已调用” .

#include<iostream>
using namespace std;
class Base {
public :
// non-virtual by default
void show() {
cout<< "Base::show() called" ;
}
};
class Derived: public Base {
public :
void show() {
cout<< "Derived::show() called" ;
}
};
int main()
{
Derived d;
Base &b = d;
b.show();
getchar ();
return 0;
}


添加 事实上的 在定义 Base::show() 使程序打印 “已调用派生::show()”

在Java中,默认情况下方法是虚拟的,可以通过使用 最终的 关键词。例如,在下面的java程序中, show() 默认情况下是虚拟的,程序会打印 “已调用派生::show()”

class Base {
// virtual by default
public void show() {
System.out.println( "Base::show() called" );
}
}
class Derived extends Base {
public void show() {
System.out.println( "Derived::show() called" );
}
}
public class Main {
public static void main(String[] args) {
Base b = new Derived();;
b.show();
}
}


与C++非虚拟行为不同,如果我们添加 最终的 在中定义show()之前 基础 ,则上述程序编译失败。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享