C++ 域解析

本篇文章主要解釋域的思想

域之所以存在,主要是爲了讓名字可以被複用,這樣就極大節省了取名字的費時費力,試想一下,如果對於每個數據我們都要取一個全新的名字,取一兩個還行,取一兩百個的時候,自己都不知道該取個啥名字才能不重複了。

如果學過數學的集合概念的話,用集合的思想來理解域是很適合的,集合本身要求不重複,並且具有包含關係

有三種域,需要大家先對它們有個概念:

名字空間域:在函數聲明、函數定義、類定義之外的程序文本,統稱爲名字空間域,最外層的名字空間域,我們稱之爲全局名字空間域或者是全局域

局部域:包含在一個函數定義裏面的程序文本

類域:包含在一個類定義裏面的程序文本

我們來看一個例子:

#include<stdio.h>
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
	int s1 = 2;
	if (s1 == 2)
	{
		int s1 = 1;
		cout << s1 << endl;
	}
	cout << s1;
	return 0;
}

上面這段例子,main函數定義以外的部分就是全局域,而main函數內部的就是局部域,這個以外以內怎麼區分呢?找大括號,看main後面跟着的大括號裏面的,就是函數定義內部,大括號外面的,就是函數定義外部

最終輸出的結果是:

1

2

大家可以看到有兩個int s1,爲什麼不會出現重複定義呢?因爲第二個int s1語句是在一個嵌套域中,例如:

①{

②{

}

}

這裏有兩個域(看大括號),①和②,其中②是①的嵌套域,那麼在①中有個人叫張三,在②中也可以讓一個人叫張三,有朋友可能要問,既然有兩個人都叫張三,程序怎麼知道我指的是哪個?回答:在②中出現的張三,指的就是第二個張三,直到你出了②域,你再寫張三,指的就是第一個張三了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章