c++中的变量作用范围
生活随笔
收集整理的這篇文章主要介紹了
c++中的变量作用范围
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
因為最近項目很忙,所以只是暫時做個簡單的筆記,以后有時間了我會再重新做個整理:
順便附上一個網站,可以在線寫代碼的,適合進行小規模的代碼測試(做開發當然是不可能的):
點擊打開鏈接
在平時的c++中:
#include <iostream> using std::cout; using std::cin;int a = 1;int main(){cout << a;return 0; }我們知道,在main函數外定義一個變量,在main函數里面可以直接調用(其他函數也是),相當于是一個全局變量。當然,如果將變量定義在main里面,那么main外面的函數自然是無法調用的。在這里我們不討論跨文件調用的情況(extern這個以后再說) #include <iostream> using std::cout; using std::cin;int a = 1;int main(){a = 2;cout << a;return 0; }我們先看這樣一種最簡單的情況,a=2,這是將上面的a的值直接覆蓋掉了,相當于更新了變量a的值。 #include <iostream> using std::cout; using std::cin;int a = 1;int main(){int a = 2;cout << a;return 0; }這里的情況,在main里面的a前面加了個int,這其實是定義了一個局部變量,這個局部變量只在main里面生效,事實上外面的a=1不是被覆蓋了,而是壓根兒就沒有被調用到。相信這種情況也是非常好理解的。 #include <iostream> using std::cout; using std::cin;int a = 1;int main(){a = 2;cout << ::a;return 0; }接著我們再看,這個時候在輸出的時候增加了::,這樣一來,輸出的a就不是函數內部的局部變量了,而是外面的全局變量,就好像一個類的靜態成員變量,事實上所有的文件都可以看成是一個class,如果想要調用函數外面的全局變量就可以采用::符號,這個在平時是不需要的,因為函數會在執行的時候先查找內部有沒有定義該變量,如果沒有,那么就在該文件里尋找,如果在函數內部已經找到了就不會再去函數外面尋找了,所以如果在函數內部定義了某個同名變量,又想要訪問外面的變量,那就使用::即可。再說一個關于class的變量名稱問題:
#include <iostream> using std::cout; using std::cin;class Slime{public: //史萊姆的默認攻擊力是25,默認生命值是30。Slime(int Attack = 25, int Health = 30){attack = Attack;health = Health;}int getAttack(){return attack;}int getHealth(){return health;}private:int attack;int health; };int main(){Slime one(20,50);cout << one.getAttack() << '\n';cout << one.getHealth();return 0; }在這里我們定義了一個非常簡單的史萊姆類,并且實例化了一個one對象,不過在史萊姆的構造函數里面,我們將形參用大寫開頭,然后將其值傳給private的值保存起來。這種方法需要形參的名字和private里面需要保存的實參的名字不同,否則保存就會失敗,那么可不可以同名呢?答案是可以的,也是利用上面的方法使用::符號如下: #include <iostream> #include <memory> using std::cout; using std::cin;class Slime{public:Slime(int attack = 25, int health = 30){Slime::attack = attack;Slime::health = health;}~Slime(){//cout << "刪了";}int getAttack(){return attack;}int getHealth(){return health;}private:int attack;int health; };int main(){Slime one(20, 50);Slime* two = new Slime;cout << one.getAttack() << '\n';cout << one.getHealth() << '\n';cout << two->getAttack() << '\n';cout << two->getHealth() << '\n';//delete two;//two = NULL;return 0; }總結
以上是生活随笔為你收集整理的c++中的变量作用范围的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Animy.js,自己编写的功能丰富的h
- 下一篇: 简易boundbox碰撞检测