C++程序設計入門(上) 函數學習
阿新 • • 發佈:2019-04-06
and wid you col 結果 class ont aic 移動
局部變量和全局變量的訪問:
全局變量的作用域時全局,局部變量的作用域是局部,若全局和局部的變量名相同的話,局部變量的改變不會引起全局變量的改變
#include<iostream> int a=1; int main() { int a=10; std::cout << a << std::endl; std::cout << ::a << std::endl; return 0; }局部變量名與全局變量名相同時, 可使用 :: 訪問全局變量
重載函數:
已知一個程序
int max(int num1, int num2)
{
if (num1 > num2) return num1;
else return num2;
}
如果遇到浮點數要比大小怎麽辦?
解決方法是方法是生成 一個同名不同參數的函數;
編譯器如何匹配重載函數調用? ? 看參數:1. 個數 2.類型 3.順序
#include<iostream> using namespace std; int max(int num1,int num2) { if(num1>num2) return num1;else return num2; } double max(double num1,double num2) { if(num1>num2) return num1; else return num2; } int main() { cout << max(1,2) << endl; cout << max(3.4,5.2) << endl; return 0; }
默認參數值:
C++ allows you to declare functions with default argument values. (可以聲明帶默認參數值的 函數)
The default values are passed to the parameters when a function is invoked without the arguments. (無參調用函數時,默認值會 被傳遞給形式參數)
定義時要註意:參數列表中默認值參數應該後置
錯誤的代碼:
1 void t1 (int x, int y=0, int z); 2 void t2 (int x, int y=0, int z);
正確的代碼:
1 void t3 (int x, int y=0, int z=0); 2 void t4 (int x=0, int y=0, int z=0);
調用時需要註意:
參數列表中實參應該前置
錯誤代碼:
t3 (1, , 20); t4 ( , , 20);
正確代碼:
t3 (1); // y,z: default value t4 (1, 2); // z: default value
內聯函數:
Using functions in a program:
Advantages(優點): 易讀易維護
Drawbacks (缺點): 運行時性能開銷 • 函數調用時:參數及部分CPU寄存器的 寄存器內容進棧,控制流跳轉 • 函數返回時:返回值及寄存器值出棧, 控制流跳轉
Inline functions ? 目的:減小性能開銷
? 方法:代碼插入到調用處
? 結果:導致程序變大
用法:在函數前加關鍵字inline
inline int max (int a, int b) { return (a > b ? a : b); }
錯誤的代碼:
int max (int a, int b); // Call max() inline int max (int a, int b) { return (a > b ? a : b); }
內聯函數適用於短函數
C++程序設計入門(上) 函數學習