C++和C不同是因為函數重載

來源:互聯網
上載者:User

  在C語言裡,一個指標可以指向一個函數。這個指標也有兩個屬性,但一個是函數的入口地址,另一個是函數的返實值型別。例如下面的程式,它在C語言裡是正確的:

  int time12(int i)

  { return(i%12);

  }

  int main()

  { int(*fp)()=time12;

  intt=fp(13);

  return0;

  }

  主函數的第一句是一條定義語句。我們應從等號左邊的標識符讀起,等號左邊出現的除了標識符以外都是類型的符號,讀的順序卻要按照這個符號作為運算子時的運算層級來讀。此句讀作:fp是一個指標、它指向函數(注意,C語言允許其參數類型不寫出)、這個函數的返值是int、這個指標被初始化為函數time12的入口地址。

  然而,上述程式在C++裡,第一條語句卻被認為是有錯誤的。C++是強型別檢查語言,這與C++的函數重載機制有關。C++要求必須指出函數的所有形式參數的類型。下列程式才是正確的C++程式:

  int time12(int i)

  { return(i%12);

  }

  int main()

  { int(*fp)(int)=time12;

  intt=fp(13);

  return0;

  }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.