萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> C++和C不同是因為函數重載

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

  在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;

  }

copyright © 萬盛學電腦網 all rights reserved