最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

你不知道的C++中namespace和using的用法實例

 更新時間:2022年12月19日 11:30:03   作者:莫淺子  
在C++語言編寫的程序中,變量和函數(shù)等的作用范圍是有一定限制的,下面這篇文章主要給大家介紹了一些你不知道的C++中namespace和using的用法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

引言

你是不是只認(rèn)為namespace 和 using 在C++中是基本的語法框架,但是卻不知道它們的真正用法,看完文章你會對using和namespace有一定了解,幫助你深入學(xué)習(xí)C++

一: 冒號作用域

:: 運算符是一個作用域,如果::前面什么都沒有加 代表是全局作用域

也就是如果你輸入的數(shù)前加了:: 代表是全局變量 

代碼 

#include <iostream>
using namespace std;
 
int a = 100;
void test01()
{
	int a = 10;
	cout << a << endl;    //打印局部變量
	cout << ::a << endl;  //打印全局變量
}
int main()
{
	test01();
 
	return 0;
}

最后結(jié)果

10

100

二、名字控制

1 命令空間

namespace 本質(zhì)是作用域,可以更好的控制標(biāo)識符的作用域

命名空間 就可以存放 變量 函數(shù) 類 結(jié)構(gòu)體 ...

2 命令空間的使用

1)命令空間的定義 必須定義在全局范圍

2)命名空間下可以存放 變量 函數(shù) 結(jié)構(gòu)體 類

namespace A
{
	int a = 1;
 
	void fun()
	 {
		cout << "hello namespace" << endl;
	 }
	 void foo(int agr);
	 struct std   //結(jié)構(gòu)體
	 {};
	 class obj    //類
	 {};
	
}

3)命名空間可以重名 重名的命名空間相當(dāng)于做合并操作

namespace B
{
	int a = 10;
	int b = 20;
}
//命名空間可以重名
namespace B
{
	int c = 100;
}

4)命名空間可以嵌套命名空間

//命名空間可以嵌套
namespace C
{
	int a = 10;
	int b = 20;
	namespace D
	{
		int a = 100;
	}
}
void test02()
{
	cout << C::a << endl;
	cout << C::D::a << endl;
}

5)命名空間可以取別名, namespace newname = oldname;新名字與舊名字有同等效益

namespace NewA = A;

6)命名空間可以沒有名字 ,沒有名字相當(dāng)于給命名空間 內(nèi)的所有成員加上了static修飾

相當(dāng)于只能被當(dāng)前文件調(diào)用,屬于內(nèi)部鏈接屬性

namespace {
	int a = 10;
	void func() { cout << "hello namespace" << endl; }
 
}

7)命名空間中的函數(shù)可以先聲明,在外部定義,定義時需要加上命名空間作用域

namespace A
{
	 void foo(int agr);	
}
void A::foo(int arg)
{
	 cout << arg << endl;
}
void test03()
{
	A::foo(222);
}

總的代碼

#include <iostream>
using namespace std;
// 命令空間的定義 必須定義在全局范圍
// 命名空間下可以存放 變量 函數(shù) 結(jié)構(gòu)體 類
// 命名空間可以重名 重名的命名空間相當(dāng)于合并操作
// 命名空間可以嵌套命令空間
namespace A
{
	int a = 1;
 
	void fun()
	 {
		cout << "hello namespace" << endl;
	 }
	 void foo(int agr);
	 struct std   //結(jié)構(gòu)體
	 {};
	 class obj    //類
	 {};
	
}
//與A作用域下定義不一樣,這個在全局作用域下
void A::foo(int arg)
{
	 cout << arg << endl;
}
namespace NewA = A;
 
 //命名空間是可以取別名
 // namespace newname = oldname
 
namespace B
{
	int a = 10;
	int b = 20;
}
//命名空間可以重名
namespace B
{
	int c = 100;
}
//命名空間可以嵌套
namespace C
{
	int a = 10;
	int b = 20;
	namespace D
	{
		int a = 100;
	}
}
void test01()
{
	cout << A::a << endl;
	cout << B::a << endl;
	cout << B::b << endl;
	cout << B::c << endl;
	A::fun();        //表示A空間中fun函數(shù)調(diào)用
	
}
void test02()
{
	cout << C::a << endl;
	cout << C::D::a << endl;
}
void test03()
{
	A::foo(222);
}
 
namespace {
	int a = 10;
	void func() { cout << "hello namespace" << endl; }
 
}
 
int main()
{
	test01();
	test02();
	test03();
	return 0;
}

 三、 using的指令

1 using的聲明

usinng 的聲明可以使得指定標(biāo)識符可用

注意: 當(dāng)using聲明的標(biāo)識符和其他同名標(biāo)識符有作用域的沖突時,會產(chǎn)生二義性

namespace nameA
{
	int a = 10;
	void foo()
	{
		cout << "Hello using" << endl;
	}
}
void test01()
{
	//注意當(dāng)using指定聲明標(biāo)識符和其他標(biāo)識符作用域有作用域的沖突時,會產(chǎn)生二義性
	//int a = 100
	using nameA::a;
	using nameA::foo;
	cout << nameA::a << endl;
	cout << a << endl;
 
	foo();
}

2 using的編譯指令

void test02()
{
	int a = 1000;
	// using編譯指令使整個命名空間標(biāo)識符可用
	using namespace nameA;
	cout << a << endl; //結(jié)果為1000,就近原則
	foo();
}

總結(jié)代碼

#include <iostream>
using namespace std;
 
namespace nameA
{
	int a = 10;
	void foo()
	{
		cout << "Hello using" << endl;
	}
}
void test01()
{
	//注意當(dāng)using指定聲明標(biāo)識符和其他標(biāo)識符作用域有作用域的沖突時,會產(chǎn)生二義性
	//int a = 100
	using nameA::a;
	using nameA::foo;
	cout << nameA::a << endl;
	cout << a << endl;
 
	foo();
}
void test02()
{
	int a = 1000;
	// using編譯指令使整個命名空間標(biāo)識符可用
	using namespace nameA;
	cout << a << endl; //結(jié)果為1000,就近原則
	foo();
}
int main()
{
	test01();
	test02();
}

 輸出

總結(jié)

到此這篇關(guān)于你不知道的C++中namespace和using用法的文章就介紹到這了,更多相關(guān)C++ namespace和using用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++封裝線程類的實現(xiàn)方法

    C++封裝線程類的實現(xiàn)方法

    這篇文章主要介紹了C++封裝線程類的實現(xiàn)方法,實例介紹了針對線程的創(chuàng)建、調(diào)用等方法的封裝操作,需要的朋友可以參考下
    2014-10-10
  • C語言實現(xiàn)賓館管理系統(tǒng)課程設(shè)計

    C語言實現(xiàn)賓館管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)賓館管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c++代碼調(diào)試方式的幾點建議

    c++代碼調(diào)試方式的幾點建議

    這篇文章主要介紹了c++代碼調(diào)試方式的幾點建議,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C語言編程動態(tài)內(nèi)存開辟實現(xiàn)升級版通訊錄教程示例

    C語言編程動態(tài)內(nèi)存開辟實現(xiàn)升級版通訊錄教程示例

    這篇文章主要為大家介紹了C語言編程實現(xiàn)動態(tài)內(nèi)存開辟升級版通訊錄的教程示例及解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • 一文帶你吃透C++繼承

    一文帶你吃透C++繼承

    繼承是C++語言的一個重要特性,繼承使得軟件(代碼)復(fù)用變得簡單、易行,可以通過繼承復(fù)用已有的程序資源,縮短軟件開發(fā)的周期,本就帶大家吃透C++繼承,需要的朋友可以參考下
    2023-06-06
  • C++面向?qū)ο笳Z言自制多級菜單功能實現(xiàn)代碼

    C++面向?qū)ο笳Z言自制多級菜單功能實現(xiàn)代碼

    菜單類主要負(fù)責(zé)菜單的創(chuàng)建、修改、刪除,是包含菜單結(jié)構(gòu)組織和響應(yīng)函數(shù)的模型,用戶擁有充分的自主性,可根據(jù)需要自定義菜單顯示和響應(yīng)函數(shù),這篇文章主要介紹了C++面向?qū)ο笳Z言自制多級菜單,需要的朋友可以參考下
    2024-06-06
  • C++數(shù)據(jù)結(jié)構(gòu)分析多態(tài)的實現(xiàn)與原理及抽象類

    C++數(shù)據(jù)結(jié)構(gòu)分析多態(tài)的實現(xiàn)與原理及抽象類

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作
    2022-02-02
  • C語言實現(xiàn)訪問及查詢MySQL數(shù)據(jù)庫的方法

    C語言實現(xiàn)訪問及查詢MySQL數(shù)據(jù)庫的方法

    這篇文章主要介紹了C語言實現(xiàn)訪問及查詢MySQL數(shù)據(jù)庫的方法,涉及C語言基于libmysql.lib實現(xiàn)訪問MySQL數(shù)據(jù)庫的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • C語言函數(shù)指針的老生常談

    C語言函數(shù)指針的老生常談

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • c語言左移和右移的示例詳解

    c語言左移和右移的示例詳解

    這篇文章主要介紹了c語言左移和右移的示例詳解,移位操作符的兩個操作數(shù)必須是整型的。整個移位表達式的值的類型也是整型的,而且,左移位操作符與右移位操作符的運算并不對稱。
    2020-07-07

最新評論

大足县| 岳阳县| 鹤峰县| 阿鲁科尔沁旗| 东乌| 康乐县| 康乐县| 新郑市| 奉节县| 融水| 泰宁县| 天津市| 灵山县| 龙山县| 于田县| 乡城县| 河北省| 通州市| 湖口县| 宁强县| 土默特左旗| 庆城县| 关岭| 新巴尔虎右旗| 常熟市| 兴海县| 顺平县| 马关县| 英吉沙县| 浑源县| 鄂托克前旗| 武城县| 新民市| 玉门市| 安徽省| 安龙县| 织金县| 当涂县| 商洛市| 平顶山市| 聊城市|