C/C++與Java函數重載區別!

來源:互聯網
上載者:User

#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卻可以區分...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.