C++和java的对象实例化问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 03:08:00
C++:父类(抽象类) *对象名 = new 子类(非抽象类)
Java::父类(抽象类) 对象名 = new 子类(非抽象类)
为啥C++实例化错误而Java实例化正确,不是说抽象类不能实例化么

Java::父类(抽象类) 对象名 = new 子类(非抽象类)

new 子类 返回了一个子类的引用给父类,事实上是新建了子类对象

而在c++中 关键字new不是用来新建对象的,而是用来申请内存空间的,应该赋值给相应类型的指针

这就是C++的多态性

没错啊··例如父类是Father,子类是Son.那么

C++: Father *f = new Son();
Java: Father f = new Son();

都可以的···C++的多态依赖于指针,所以找成员的时候要用->运算符,例如上面,C++的f要调用成员函数Member()就要这样写:

f->Member();

如果Member()是虚函数且子类重写了,那么,将会调用子类的Member(),否则调用父类的Member()。