日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

探索 C++20 的新領(lǐng)域:深入理解 static 關(guān)鍵字和核心語(yǔ)言特性測(cè)試宏

來(lái)源: 責(zé)編: 時(shí)間:2023-11-21 09:39:15 299觀看
導(dǎo)讀static 關(guān)鍵字(1) static 的多種用途在 C++ 中,static 關(guān)鍵字有幾種看似無(wú)關(guān)的用途。為該關(guān)鍵字“過(guò)載”部分動(dòng)機(jī)是為了避免在語(yǔ)言中引入新的關(guān)鍵字。(2) static 數(shù)據(jù)成員和方法你可以聲明類的 static 數(shù)據(jù)成員和方法

static 關(guān)鍵字

(1) static 的多種用途czm28資訊網(wǎng)——每日最新資訊28at.com

在 C++ 中,static 關(guān)鍵字有幾種看似無(wú)關(guān)的用途。為該關(guān)鍵字“過(guò)載”部分動(dòng)機(jī)是為了避免在語(yǔ)言中引入新的關(guān)鍵字。czm28資訊網(wǎng)——每日最新資訊28at.com

(2) static 數(shù)據(jù)成員和方法czm28資訊網(wǎng)——每日最新資訊28at.com

你可以聲明類的 static 數(shù)據(jù)成員和方法。與非靜態(tài)數(shù)據(jù)成員不同,static 數(shù)據(jù)成員不是每個(gè)對(duì)象的一部分。相反,數(shù)據(jù)成員的只有一份副本,存在于該類的任何對(duì)象之外。static 方法同樣處于類級(jí)別而不是對(duì)象級(jí)別。static 方法不在特定對(duì)象的上下文中執(zhí)行;因此,它沒(méi)有隱式的 this 指針。這也意味著 static 方法不能被標(biāo)記為 const。czm28資訊網(wǎng)——每日最新資訊28at.com

czm28資訊網(wǎng)——每日最新資訊28at.com

static 鏈接

(1) 鏈接的概念czm28資訊網(wǎng)——每日最新資訊28at.com

在涉及 static 關(guān)鍵字用于鏈接之前,需要理解 C++ 中鏈接的概念。C++ 源文件是獨(dú)立編譯的,編譯后的對(duì)象文件被鏈接在一起。czm28資訊網(wǎng)——每日最新資訊28at.com

C++ 源文件中的每個(gè)名稱(包括函數(shù)和全局變量)都有一個(gè)鏈接性,可以是外部的(external)或內(nèi)部的(internal)。外部鏈接意味著該名稱可以從其他源文件訪問(wèn)。內(nèi)部鏈接(也稱為靜態(tài)鏈接)則意味著不可以。默認(rèn)情況下,函數(shù)和全局變量具有外部鏈接。然而,可以通過(guò)在聲明前加上 static 關(guān)鍵字來(lái)指定內(nèi)部(或靜態(tài))鏈接。czm28資訊網(wǎng)——每日最新資訊28at.com

例如,假設(shè)有兩個(gè)源文件:FirstFile.cpp 和 AnotherFile.cpp。這是 FirstFile.cpp 的內(nèi)容:czm28資訊網(wǎng)——每日最新資訊28at.com

void f();int main() {    f();}

這個(gè)文件為 f() 提供了一個(gè)原型,但沒(méi)有顯示定義。而這是 AnotherFile.cpp:czm28資訊網(wǎng)——每日最新資訊28at.com

import <iostream>;void f();void f() {    std::cout << "f/n";}

這個(gè)文件為 f() 提供了原型和定義。請(qǐng)注意,在兩個(gè)不同的文件中為同一函數(shù)編寫(xiě)原型是合法的。如果你將原型放在頭文件中,然后在每個(gè)源文件中 #include 該頭文件,這正是預(yù)處理器為你做的事情。czm28資訊網(wǎng)——每日最新資訊28at.com

每個(gè)源文件都能無(wú)錯(cuò)誤地編譯,并且程序鏈接正常:因?yàn)?nbsp;f 具有外部鏈接,main() 可以從不同的文件調(diào)用它。然而,假設(shè)你在 AnotherFile.cpp 中的 f() 原型上應(yīng)用 static。czm28資訊網(wǎng)——每日最新資訊28at.com

請(qǐng)注意,你不需要在 f() 定義前重復(fù) static 關(guān)鍵字。只要它出現(xiàn)在函數(shù)名稱的第一個(gè)實(shí)例之前,就無(wú)需重復(fù)。czm28資訊網(wǎng)——每日最新資訊28at.com

import <iostream>;static void f();void f() {    std::cout << "f/n";}

現(xiàn)在每個(gè)源文件仍然可以無(wú)錯(cuò)誤地編譯,但鏈接步驟失敗,因?yàn)?nbsp;f() 具有內(nèi)部(靜態(tài))鏈接,使其無(wú)法從 FirstFile.cpp 訪問(wèn)。某些編譯器在靜態(tài)方法被定義但未在該源文件中使用時(shí)會(huì)發(fā)出警告(暗示它們不應(yīng)該是靜態(tài)的,因?yàn)樗鼈兛赡茉谄渌胤绞褂茫?span style="display:none">czm28資訊網(wǎng)——每日最新資訊28at.com

(2) 使用匿名命名空間czm28資訊網(wǎng)——每日最新資訊28at.com

用于內(nèi)部鏈接的 static 的替代方法是使用匿名命名空間。與其將變量或函數(shù)標(biāo)記為 static,不如將其包裝在一個(gè)無(wú)名命名空間中,如下所示:czm28資訊網(wǎng)——每日最新資訊28at.com

import <iostream>;namespace {    void f();    void f() {        std::cout << "f/n";    }}

匿名命名空間中的實(shí)體可以在同一源文件中其聲明之后的任何地方訪問(wèn),但不能從其他源文件訪問(wèn)。這些語(yǔ)義與使用 static 關(guān)鍵字獲得的語(yǔ)義相同。czm28資訊網(wǎng)——每日最新資訊28at.com

警告:為了獲得內(nèi)部鏈接,建議使用匿名命名空間,而不是 static 關(guān)鍵字。czm28資訊網(wǎng)——每日最新資訊28at.com

czm28資訊網(wǎng)——每日最新資訊28at.com

拓展內(nèi)容:核心語(yǔ)言特性的特性測(cè)試宏

C++20 添加了特性測(cè)試宏,這些宏可用于檢測(cè)編譯器支持哪些核心語(yǔ)言特性。所有這些宏都以 __cpp_ 或 __has_cpp_ 開(kāi)頭。以下是一些示例:czm28資訊網(wǎng)——每日最新資訊28at.com

  • __cpp_range_based_for
  • __cpp_binary_literals
  • __cpp_char8_t
  • __cpp_generic_lambdas
  • __cpp_consteval
  • __cpp_coroutines
  • __has_cpp_attribute(fallthrough)
  • 等等...

這些宏的值是一個(gè)數(shù)字,代表添加或更新特定特性的月份和年份,格式為 YYYYMM。例如,__has_cpp_attribute(nodiscard) 的值可以是 201603(即 2016 年 3 月,[[nodiscard]] 屬性首次引入的日期),或者是 201907(即 2019 年 7 月,屬性更新以允許指定原因,如 [[nodiscard("Reason")]])。czm28資訊網(wǎng)——每日最新資訊28at.com

注意:除非你正在編寫(xiě)非常通用的跨平臺(tái)和跨編譯器庫(kù),否則你很少需要這些特性測(cè)試宏。czm28資訊網(wǎng)——每日最新資訊28at.com

czm28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-32015-0.html探索 C++20 的新領(lǐng)域:深入理解 static 關(guān)鍵字和核心語(yǔ)言特性測(cè)試宏

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 為什么Go是后端開(kāi)發(fā)的未來(lái)

下一篇: Python自動(dòng)化辦公實(shí)戰(zhàn):PDF文本提取技巧

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • Find N3入網(wǎng):最高支持16+1TB

    OPPO將于近期登場(chǎng)的Find N3折疊屏目前已經(jīng)正式入網(wǎng),型號(hào)為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號(hào)的橫向折疊屏,而是跟別的廠商一樣采用了較為常見(jiàn)的
  • MIX Fold3包裝盒泄露 新機(jī)本月登場(chǎng)

    小米的全新折疊屏旗艦MIX Fold3將于本月發(fā)布,近日該機(jī)的真機(jī)包裝盒在網(wǎng)上泄露。從圖上來(lái)看,新的MIX Fold3包裝盒在外觀設(shè)計(jì)方面延續(xù)了之前的方案,變化不大,這也是目前小米旗艦
  • 7月安卓手機(jī)好評(píng)榜:三星S23Ultra好評(píng)率第一

    性能榜和性價(jià)比榜之后,我們來(lái)看最后的安卓手機(jī)好評(píng)榜,數(shù)據(jù)來(lái)源安兔兔評(píng)測(cè),收集時(shí)間2023年7月1日至7月31日,僅限國(guó)內(nèi)市場(chǎng)。第一名:三星Galaxy S23 Ultra好評(píng)率:95.71%在即將迎來(lái)新
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價(jià)比榜和好評(píng)榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機(jī)潮已經(jīng)過(guò)去,最明顯的肯定就是大內(nèi)存和存儲(chǔ)的機(jī)型了,另外部分中端機(jī)也取消了屏幕塑料支架
  • 0糖0卡0脂 旭日森林仙草烏龍茶優(yōu)惠:15瓶到手29元

    旭日森林無(wú)糖仙草烏龍茶510ml*15瓶平時(shí)要賣(mài)為79.9元,今日下單領(lǐng)取50元優(yōu)惠券,到手價(jià)為29.9元。產(chǎn)品規(guī)格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • 三言兩語(yǔ)說(shuō)透設(shè)計(jì)模式的藝術(shù)-簡(jiǎn)單工廠模式

    一、寫(xiě)在前面工廠模式是最常見(jiàn)的一種創(chuàng)建型設(shè)計(jì)模式,通常說(shuō)的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡(jiǎn)單工廠模式又稱為靜態(tài)工廠方法模式,不屬于GoF 23種設(shè)計(jì)
  • 十個(gè)可以手動(dòng)編寫(xiě)的 JavaScript 數(shù)組 API

    JavaScript 中有很多API,使用得當(dāng),會(huì)很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對(duì)它們進(jìn)行一次小總結(jié)。現(xiàn)在開(kāi)始吧。1.forEach()forEach()用于遍歷數(shù)組接收一參
  • 微軟邀請(qǐng) Microsoft 365 商業(yè)用戶,測(cè)試視頻編輯器 Clipchamp

    8 月 1 日消息,微軟近日宣布即將面向 Microsoft 365 商業(yè)用戶,開(kāi)放 Clipchamp 應(yīng)用,邀請(qǐng)用戶通過(guò)該應(yīng)用來(lái)編輯視頻。微軟于 2021 年收購(gòu) Clipchamp,隨后開(kāi)始逐步整合到 Microsof
  • 榮耀Magicbook V 14 2021曙光藍(lán)版本正式開(kāi)售,擁有觸摸屏

    榮耀 Magicbook V 14 2021 曙光藍(lán)版本正式開(kāi)售,搭載 i7-11390H 處理器與 MX450 顯卡,配備 16GB 內(nèi)存與 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 鍵盤(pán)鍵程、
Top 主站蜘蛛池模板: 广德县| 铜鼓县| 申扎县| 冀州市| 桃江县| 三门峡市| 罗江县| 谷城县| 清河县| 通渭县| 南充市| 武宁县| 屏山县| 黑山县| 漾濞| 修水县| 阳西县| 五台县| 延津县| 习水县| 靖宇县| 宿松县| 新邵县| 潞西市| 富民县| 望都县| 喀喇沁旗| 延寿县| 司法| 湄潭县| 蓬莱市| 池州市| 阜宁县| 灵丘县| 伊吾县| 新安县| 顺平县| 分宜县| 南部县| 元谋县| 长汀县|