#include <iostream><br />using namespace std;</p><p>class Base {<br />public:</p><p> virtual void fn(int x) {<br /> cout << "In Base class, int x = " << x << endl;<br /> }<br />};</p><p>class SubClass : public Base {<br />public:</p><p> // 函數的重載,這樣的重載方式,在Java中能行,在C/C++中卻不行<br /> virtual void fn(float x) {<br /> cout << "In SubClass, float x = " << x << endl;<br /> }<br />};</p><p>void test(Base& b) {<br /> int i = 1;<br /> b.fn(i);<br /> float f = 2.0;<br /> b.fn(f);<br />}</p><p>int main() {<br /> Base bc;<br /> SubClass sc;<br /> cout << "Calling test(bc)/n";<br /> test(bc);<br /> cout << "Calling test(sc)/n";<br /> test(sc);<br /> return 0;<br />}<br />
Calling test(bc)
In Base class, int x = 1
In Base class, int x = 2
Calling test(sc)
In Base class, int x = 1
In Base class, int x = 2
運行成功(總計時間: 312毫秒)
注意,都是調用的父類中的函數.
package cn.vicky;</p><p>public class MyTest {</p><p>public void add(int i) {<br />System.out.println("in parent");<br />}</p><p>public static void main(String[] args) {<br />MyTest2 m2 = new MyTest2();<br />m2.add(1);<br />m2.add(1.1);<br />}<br />}</p><p>class MyTest2 extends MyTest {</p><p>public void add(double i) {<br />System.out.println("in child");<br />}<br />}<br />
in parent
in child
Java卻可以區分...