天天看點

C++ 學習筆記一易忽略的地方

一、C++ 作用域

1、下列程式将會輸出什麼?

int i = 50,sum = 0;

for(int i = 0;i <= 10; i++)

sum += i;

std::cout << i << " " << sum << std::endl;

咋一看很簡單,馬上給出答案i = 10,sum = 45;也許是馬虎所得,主要還是考慮問題不全面,正确答案i = 50,在for中定義的i 作用域隻在for循環體中,出了這個作用域,定義的i也就不存在了,輸出的i是全局定義的值。

2、下列程式合法嗎?

int sum = 0;

for(int i = 0;i <= 10;i++)

sum += i;

std::cout << "Sum from 0 to "  << i << " is " << sum << std::endl;

答案不合法,i值不具有全局作用域,作用域在for循環中,隻在for循環中可以使用

3、多個檔案中使用const變量,檔案1 file_a.cpp extern const int a = 10;在檔案2 中使用a 變量file_b.cpp extern int a;在定義時需要加上extern修飾符才可以在别的檔案中使用這個常量。

4、定義const 變量(常量)必須初始化,const int a = 10;

5、在實際程式中引用主要用作函數的形式參數。

6、非const 引用不能綁定右值,如:int &a = 10;錯誤;

的網上

兄弟的身世

咋一看

咋一看