|
|
2
10
这段代码在运行时根据实际创建的对象类型(A或B)调用f()的正确版本-没有“歧义”。在编译时无法知道该类型,因为它是在运行时随机选择的。
|
|
|
3
1
把这个转过来
到
|
|
|
4
1
运行时意味着只有在运行时才知道确切的方法。考虑这个例子:
当您实现::func()时,您不知道基类*a所指向的实例的确切类型。它可能是DerivedClassA或DerivedClassB实例等。
|
|
|
5
0
您需要在基类和每个派生类中声明一些有用的业务方法。然后你有这样的代码
现在a指针可能指向任何派生类的实例,因此a所指向的类型必须决定调用哪个someMethod()。 |
|
|
6
0
上面的代码不支持运行时多态性。让我们运行并分析它。 输出为
换条线就行了
再换一次线
|
|
|
Eris · 纯虚拟成员有什么优势吗(除了他们可能防止的人为错误)? 4 年前 |
|
|
James Nguyen · Java多态性:为什么返回错误? 8 年前 |
|
|
Alex Cristea · 如何从另一个类的数组中打印特定行 8 年前 |
|
juztcode · C语言中的静态和动态分辨率++ 8 年前 |
|
|
Hugo · 具有多态关系的活动记录获取关联模型 8 年前 |
|
|
pooya13 · 机器代码层上虚函数和条件执行的区别 8 年前 |
|
|
Nisba · C中子类类型未知的模型类/子类++ 8 年前 |
|
|
R zu · 使用多次调用的可替换方法初始化 8 年前 |