虽然定义的形式相似,但是val和cval的作用域却存在很大的差别。因为val定义形式相当于extern int val =0;也就是说val是一个全局变量(在函数外部非const和static变量定义默认加上extern关键字)。如果将val的定义放在头文件中,那将导致多重定义的错误,因为每个包含此头文件的文件都相当于定义一个全局变量val。但是cval却不存在这样的问题,因为const定义的变量默认情况下是文件作用于而不是全局作用于,也就是上面中的cval的定义不会在默认情况下加上extern关键字,从而const关键字定义的变量不是一个全局变量。这样即便将cval的定义放到头文件中也不会发生多处定义的错误,最多只是包含此头文件的文件中都有一个变量cval且其值相同而已。 2)关于引用的赋值问题
首先给出两段代码,如下: