c++ namespace名字域空間

在C++中,namespace 是一個非常重要的概念,用于組織代碼,避免名稱沖突。namespace(命名空間)是一個邏輯上的代碼組織單元,用于將代碼(類、函數、變量等)分組,從而避免命名沖突。例如,如果兩個不同的模塊都有一個名為 Controller 的類,通過將它們放在不同的命名空間中,可以避免沖突。
在以往最簡單的使用就是std命名空間了。

using namespace std;cout << "hello" << endl;
// 否則就是 std::cout << "hello" << std::endl;

定義命名空間

可以在代碼中使用 namespace 關鍵字來定義一個命名空間。

// value 和 printValue 都屬于 example 命名空間
namespace example
{int value = 10;void printValue() {std::cout << "Value: " << value << std::endl;}
}

要使用命名空間中的成員,可以使用作用域運算符 ::

example::printValue();  // 輸出: Value: 10

為了簡化代碼,可以使用 using 指令將命名空間中的成員引入到當前作用域中。

using namespace example;
printValue();  // 直接使用,而不需要 `example::`

使用命名空間

namespace 是非常靈活的,可以出現在代碼的任何地方(全局作用域、函數內部、類內部等)。

void myFunction() 
{namespace local {int value = 20;void printValue() {std::cout << "Local Value: " << value << std::endl;}}local::printValue();  // 輸出: Local Value: 20
}

兩個同名的命名空間使用

// module1的Controller類
namespace module1 
{class Controller {public:void control() {std::cout << "Module1 Controller" << std::endl;}};
}// module2的Controller類
namespace module2 
{class Controller {public:void control() {std::cout << "Module2 Controller" << std::endl;}};
}// 使用時不會沖突
module1::Controller c1;
c1.control();  // 輸出: Module1 Controllermodule2::Controller c2;
c2.control();  // 輸出: Module2 Controller

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896707.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

獲取阿里云OSS預簽名URL下載(java)

1,引入依賴 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId> </dependency> <!--AliSms--> <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-s…

中間件專欄之Redis篇——Redis的基本IO網絡模型

Redis主要采用的是單線程的事件驅動模型&#xff0c;通過I/O多路復用來實現高效的并發請求處理。 一、單線程模型 Redis 采用 單線程模型 來處理所有請求&#xff0c;包括網絡 I/O 和命令執行。雖然現代多核 CPU 能夠并行處理任務&#xff0c;但 Redis 的設計原則是盡量避免多…

Python 線程同步

Python 線程同步 Python 線程同步 Python 線程同步 線程同步是一種確保兩個或多個線程不同時執行同一塊共享代碼的機制。共享塊中的代碼通常是訪問共享數據或資源&#xff0c;這種共享塊被稱作臨界區。這個概念可以用下面的圖清晰地表示出來&#xff1a; #mermaid-svg-2TivIuc…

Linux操作系統5-進程信號3(信號的捕捉流程,信號集,sigaction)

上篇文章&#xff1a;Linux操作系統5-進程信號3&#xff08;信號的保存, 用戶態與內核態&#xff0c;內核空間&#xff09;-CSDN博客 本篇Gitee倉庫&#xff1a;???????myLerningCode/l26 橘子真甜/Linux操作系統與網絡編程學習 - 碼云 - 開源中國 (gitee.com) 本篇重點…

【機器學習chp10】降維——(核化)PCA + MDS + lsomap + 拉普拉斯特征映射 + t-NSE + UMAP

目錄 一、降維的意義與本質 1、意義 2、本質 3、常見降維方法 &#xff08;1&#xff09;線性降維 &#xff08;2&#xff09;非線性降維 二、基于重構的降維 1、PCA 2、核化PCA &#xff08;1&#xff09;實現過程 步驟一&#xff1a;數據映射與核函數定義 步驟二…

代碼的解讀——自用

代碼來自&#xff1a;https://github.com/ChuHan89/WSSS-Tissue?tabreadme-ov-file 借助了一些人工智能 run_pipeline.sh 功能總結 該腳本用于執行一個 弱監督語義分割&#xff08;WSSS&#xff09; 的完整流程&#xff0c;包含三個階段&#xff1a; Stage1&#xff1a;訓…

Powershell和BTEQ工具實現帶多組參數和標簽的Teradata數據庫批量數據導出程序

設計一個基于多個帶標簽SQL模板作為配置文件和多組參數的Powershell代碼程序和BTEQ工具&#xff0c;實現根據不同的輸入參數&#xff0c;自動批量地將Teradata數據庫的數據導出為CSV文件到指定目錄上&#xff0c;標簽和多個參數&#xff08;以“_”分割&#xff09;為組成導出數…

CF 118A.String Task(Java實現)

題目分析 輸入一個字符串&#xff0c;遍歷每一個字符&#xff0c;如果是元音字母就刪除&#xff0c;輔音字母就在其前面增加一個.&#xff0c;且所有字母輸出都是小寫。 思路分析 將輸入的字符串改為字符數組&#xff0c;考慮到任意位置插入的情況&#xff0c;所以主要選擇Lin…

LLM進階

prologue&#xff1a;最近大模型火出天際&#xff0c;I’m definitely aware I’m late to the party&#xff0c;2022年畢業之后就很少在系統的跟蹤一個domain了&#xff0c;所以這次下定決心要跟蹤一下大模型的技術細節和實現過程&#xff0c;不做AI丁真 本文三條主線&#…

Ubuntu 下查看進程 PID 和終止進程方法

查看進程 PID 使用 ps 命令: ps aux | grep <process_name>例如&#xff0c;查看名為 python 的進程&#xff1a; ps aux | grep python使用 pgrep 命令: pgrep <process_name>例如&#xff0c;查看名為 python 的進程&#xff1a; pgrep python使用 top 命令: top…

Java基礎語法練習34(抽象類-abstract)(抽象類最佳實踐-模版設計模式)

一抽象類-abstract、 父類方法不確定性的問題故將該方法設計為抽象類&#xff08;沒有實現的方法&#xff09;&#xff0c;但一般來說被子類繼承然后實現 細節&#xff1a; 1、抽象類不可以被實例化 2、抽象類可以不包含抽象方法而且可以有實現的其他非抽象方法 3、abstra…

Android SDK與NDK的區別

Android SDK&#xff08;Software Development Kit&#xff09;與NDK&#xff08;Native Development Kit&#xff09;在Android應用開發中各自扮演著重要角色&#xff0c;它們之間存在顯著的區別。以下是Android SDK與NDK的主要區別&#xff1a; 一、定義與用途 Android SDK…

DeepSeek在PiscTrace上完成個性化處理需求案例——光流法將煙霧動態可視化

引言&#xff1a;PiscTrace作為開放式的視圖分析平臺提供了固定格式的類型參數支持個性化定制處理需求&#xff0c;本文一步步的實現光流分析按照不同需求根據DeepSeek的代碼處理視頻生成數據。 光流法&#xff08;Optical Flow&#xff09;是一種基于圖像序列的計算機視覺技術…

Linux網絡 TCP全連接隊列與tcpdump抓包

TCP全連接隊列 在 Linux 網絡中&#xff0c;TCP 全連接隊列&#xff08;也稱為 Accept 隊列&#xff09;是一個重要的概念&#xff0c;用于管理已經完成三次握手&#xff0c;即已經處于 established 狀態但尚未被應用程序通過 accept( ) 函數處理的 TCP 連接&#xff0c;避免因…

flex布局自定義一行幾欄,靠左對齊===grid布局

模板 <div class"content"><div class"item">1222</div><div class"item">1222</div><div class"item">1222</div><div class"item">1222</div><div class"…

使用3090顯卡部署Wan2.1生成視頻

layout: post title: 使用3090顯卡部署Wan2.1生成視頻 catalog: true tag: [Kubernetes, GPU, AI] 使用3090顯卡部署Wan2.1生成視頻 1. 環境說明2. 模型下載3. 克隆倉庫4. 安裝依賴5. 生成視頻 5.1. 使用generate腳本生成5.2. 使用gradio啟動UI界面生成 5.2.1. 啟動gradio服務5…

Prompt生成-Prompt工程師

# Role:Prompt工程師 ## Attention&#xff1a; - 我總是被老板罵寫不出來Prompt&#xff0c;如果你能寫出優秀的Prompt會避免讓我失業&#xff0c;請認真思考并竭盡全力&#xff0c;拜托了&#xff01; ## Profile: - Author:pp - Version:2.1 - Language:中文 - Description:…

數據存儲:一文掌握RabbitMQ的詳細使用

文章目錄 一、RabbitMQ簡介二、RabbitMQ的概述2.1 基本概念2.2 實際應用場景三、RabbitMQ的安裝與配置3.1 安裝RabbitMQ3.2 啟用管理插件四、使用Python操作RabbitMQ4.1 安裝Pika庫4.2 生產者示例4.3 消費者示例4.4 發布/訂閱模式示例五、RabbitMQ的高級特性5.1 消息持久化5.2 …

Mixture of Experts與Meta Learning深度學習中的兩大變革性技術

1. 引言 隨著人工智能&#xff08;AI&#xff09;和深度學習技術的迅猛發展&#xff0c;創新的架構和算法不斷涌現&#xff0c;推動了智能系統性能的顯著提升。在這些技術中&#xff0c;Mixture of Experts (MoE) 和 Meta Learning Algorithms (MLA) 是兩種極具影響力的方法。…

【新立電子】探索AI眼鏡背后的黑科技,FPC如何賦能實時翻譯與語音識別,點擊了解未來溝通的新方式!

在全球化的今天&#xff0c;語言障礙成為人們溝通與交流的一大難題。AI眼鏡作為一種新興的智能設備&#xff0c;正在通過實時翻譯與語音識別功能&#xff0c;打破語言壁壘&#xff0c;為人們提供無縫溝通的解決方案。FPC在AI眼鏡中的應用&#xff0c;為實時翻譯與語音識別功能的…