根據(jù)筆者的歸納,主要有以下三點(diǎn):
(1)C++能夠把已用常量賦值(必須是常量賦值而不是函數(shù)賦值等)的const變量看作編譯期常數(shù),而C沒(méi)有這種功能。
const int BUFSIZE = 1024; //必須是常量賦值
char buf[BUFSIZE]; //C++中允許
(2)C++默認(rèn)const變量的鏈接性質(zhì)是內(nèi)部的,而C則默認(rèn)是外部的。在C++中必須使用extern聲明a,a才能在其他文件使用。
const int a = 0; //C++中不可以在其他文件中使用,C可以
extern const int a = 0; //C++中可以在其他文件中使用
(3)C只能允許常量初始化const外部變量,但是C++中沒(méi)有限制,如:
int f(void);
const int a = f(); //C++允許