所謂 Declaration,只是告知程式(同時也是告訴我們)有這樣的東西存在,例如:
string s;
extern double d;
int gcd (int a, int b);
除了第一個是宣告也是定義外,後二個只是單純的宣告,而不包含定義。
所謂 Definition,是為該變數(函式)配置空間,並與宣告的名字與型態結合。例如:
以上兩者皆是定義。
There must always be exactly one definition for each name in a C++ Program. However, there can be many declarations.
另一個特點在於,只要有宣告,就可以在該 scope 內使用它,但前提是 compiler 要能找到定義所在(需放在全域空間或單純宣告之前),舉個例子:
其中的 test 及 gcd 都有兩次宣告和一次定義,因為在很多時候,定義時宣告的過程是難以避免的。
所謂 Definition,是為該變數(函式)配置空間,並與宣告的名字與型態結合。例如:
vectorvec (10);
int gcd (int a, int b) {
if (b == 0)
return a;
return gcd (b, a % b);
}
以上兩者皆是定義。
There must always be exactly one definition for each name in a C++ Program. However, there can be many declarations.
另一個特點在於,只要有宣告,就可以在該 scope 內使用它,但前提是 compiler 要能找到定義所在(需放在全域空間或單純宣告之前),舉個例子:
#include< iostream >
using namespace std;
int main () {
int gcd (int a, int b);
int test = 10;
extern int test;
cout << test << endl;
return 0;
}
int gcd (int a, int b) {
if (b == 0)
return a;
return gcd (b, a % b);
}
其中的 test 及 gcd 都有兩次宣告和一次定義,因為在很多時候,定義時宣告的過程是難以避免的。
沒有留言:
張貼留言