中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè)報(bào)名系統(tǒng)是真的嗎蘇州seo快速優(yōu)化

網(wǎng)站建設(shè)報(bào)名系統(tǒng)是真的嗎,蘇州seo快速優(yōu)化,網(wǎng)站建設(shè)與管理的專業(yè)群,中交路橋建設(shè)網(wǎng)站文章目錄前言棄值表達(dá)式nodiscard標(biāo)記符函數(shù)非棄值聲明類/枚舉類/結(jié)構(gòu) 非棄值聲明返回類引用與類指針前言 在C 17中引入了一個(gè)標(biāo)記符nodiscard,用于聲明一個(gè) “非棄值(no-discard)表達(dá)式”。那么在開始之前,我們需要了解一下什么是棄值表達(dá)式。 棄值表…

文章目錄

  • 前言
  • 棄值表達(dá)式
  • nodiscard標(biāo)記符
    • 函數(shù)非棄值聲明
    • 類/枚舉類/結(jié)構(gòu) 非棄值聲明
    • 返回類引用與類指針

前言

在C++ 17中引入了一個(gè)標(biāo)記符nodiscard,用于聲明一個(gè) “非棄值(no-discard)表達(dá)式”。那么在開始之前,我們需要了解一下什么是棄值表達(dá)式。

棄值表達(dá)式

棄值表達(dá)式,就是放棄獲取返回值的表達(dá)式。首先棄值表達(dá)式的返回值是非void類型的。一般,我們使用的棄值表達(dá)式,其返回值只是起次要的作用,而其本身的作用占主要。比如++i;就是一個(gè)棄值表達(dá)式,它的主要作用就是累加,但同時(shí)我們也可以選擇獲取其累加的返回值,只不過這是次要的。

再比如,C標(biāo)準(zhǔn)庫的文件寫入函數(shù),其聲明如下:

int __cdecl fputs(const char * __restrict__ _Str,FILE * __restrict__ _File);

它有一個(gè)int類型的返回值,用于獲取寫入狀態(tài),它的主要作用是寫入文件,我可以選擇不獲取狀態(tài),也可以選擇獲取狀態(tài):

fputs("Hello World",pFile);
int result = fputs("Hello World",pFile);

nodiscard標(biāo)記符

那么我如果想向用戶建議獲取返回值,這時(shí)候,我就可以使用nodiscard標(biāo)記符。它一般用于標(biāo)記函數(shù)的返回值或者某個(gè)類。聲明語法為:

/* @since C++17 */
[[nodiscard]] return_type function();
/* @since C++20 */
[[nodiscard("message")]] return_type  function();
/* Standard lib defination */
/*  #if __cplusplus >= 201703L# define _GLIBCXX_NODISCARD [[__nodiscard__]]#else# define _GLIBCXX_NODISCARD#endif
*/
_GLIBCXX_NODISCARD return_type  function();

如果一個(gè)被nodiscard標(biāo)記了的表達(dá)式,如果我們在使用時(shí)棄值了,而且沒有使用static_cast<void>將其轉(zhuǎn)化為void時(shí),編譯器會(huì)拋出warning來提醒用戶獲取返回值。

函數(shù)非棄值聲明

[[nodiscard]] int func1(){return 1;
}[[nodiscard("nodiscared function")]] int func2(){return 1;
}int main(){func1();                         //warning C++17func2();                         //warning c++20int a = func1();                 //no warningstatic_cast<void>(func1());      //no warning
}

結(jié)果如下:
在這里插入圖片描述

類/枚舉類/結(jié)構(gòu) 非棄值聲明

class [[nodiscard]] A{};
enum class [[nodiscard]] B{X,Y};
struct [[nodiscard]] C{};A createA(){return A();
}B createB(){return B::X;
}C createC(){return C();
}int main(){createA();createB();createC();
}

輸出如下:

6.cpp: In function 'int main()':
6.cpp:22:12: warning: ignoring returned value of type 'A', declared with attribute 'nodiscard' [-Wunused-result]22 |     createA();|     ~~~~~~~^~
6.cpp:10:3: note: in call to 'A createA()', declared here10 | A createA(){|   ^~~~~~~
6.cpp:6:21: note: 'A' declared here6 | class [[nodiscard]] A{};|                     ^
6.cpp:23:12: warning: ignoring returned value of type 'B', declared with attribute 'nodiscard' [-Wunused-result]23 |     createB();|     ~~~~~~~^~
6.cpp:14:3: note: in call to 'B createB()', declared here14 | B createB(){|   ^~~~~~~
6.cpp:7:26: note: 'B' declared here7 | enum class [[nodiscard]] B{X,Y};|                          ^
6.cpp:24:12: warning: ignoring returned value of type 'C', declared with attribute 'nodiscard' [-Wunused-result]24 |     createC();|     ~~~~~~~^~
6.cpp:18:3: note: in call to 'C createC()', declared here18 | C createC(){|   ^~~~~~~
6.cpp:8:22: note: 'C' declared here8 | struct [[nodiscard]] C{};|                      ^

返回類引用與類指針

當(dāng)返回值為引用或者指針的 類/枚舉類/結(jié)構(gòu)(函數(shù)不行) 時(shí),nodiscard 就無效了:

class [[nodiscard]] A{};A& createAref(){A* a = new A();return *a;
}A* createAptr(){A* a = new A();return a;
}int main(){createAref(); //no warningcreateAptr(); //no warning
}
http://www.risenshineclean.com/news/57005.html

相關(guān)文章:

  • 杭州哪里做網(wǎng)站好如何快速推廣網(wǎng)上國網(wǎng)
  • 1.網(wǎng)站建設(shè)基本流程是什么關(guān)鍵詞排名優(yōu)化技巧
  • 網(wǎng)站專題頁面設(shè)計(jì)欣賞網(wǎng)絡(luò)營銷是指
  • 企業(yè)信用網(wǎng)站建設(shè)網(wǎng)絡(luò)運(yùn)營培訓(xùn)哪里有學(xué)校
  • 微企免費(fèi)網(wǎng)站建設(shè)制作網(wǎng)站要花多少錢
  • 班級網(wǎng)站源代碼下載關(guān)鍵詞查網(wǎng)址
  • thinkphp開發(fā)企業(yè)網(wǎng)站廣州seo網(wǎng)站推廣優(yōu)化
  • 做網(wǎng)站容易找工作嗎互聯(lián)網(wǎng)推廣有哪些方式
  • 怎么建設(shè)企業(yè)網(wǎng)站網(wǎng)絡(luò)推廣營銷
  • 濟(jì)南集團(tuán)網(wǎng)站建設(shè)公司河南推廣網(wǎng)站
  • 做網(wǎng)站有2個(gè)前提條件 一個(gè)是網(wǎng)站如何做百度免費(fèi)推廣
  • 開發(fā)安卓app關(guān)鍵詞優(yōu)化的發(fā)展趨勢
  • wordpress移動(dòng)友好度大揭秘搜索引擎優(yōu)化seo的英文全稱是
  • 網(wǎng)站建設(shè)是不是無形資產(chǎn)深圳債務(wù)優(yōu)化公司
  • 新聞發(fā)布網(wǎng)站如果做初學(xué)seo網(wǎng)站推廣需要怎么做
  • wordpress手機(jī)網(wǎng)站怎么做3天網(wǎng)站seo優(yōu)化成為超級品牌
  • 商丘做網(wǎng)站seoseo百度發(fā)包工具
  • 做網(wǎng)站最好的公司福州seo排名優(yōu)化
  • 望城區(qū)政府門戶網(wǎng)站建設(shè)局電商平臺推廣公司
  • 專業(yè)做網(wǎng)站公司 前景sem是什么意思
  • 網(wǎng)站優(yōu)化搜索查詢網(wǎng)站收錄
  • 企業(yè)網(wǎng)站建設(shè)方案新聞百度導(dǎo)航和百度地圖
  • 網(wǎng)站建設(shè)行業(yè)淘寶裝修模板排行榜軟件
  • 有什么網(wǎng)站可以做家教軟文廣告投放平臺
  • 上海裝修做網(wǎng)站的倒閉了百度seo排名優(yōu)化公司哪家強(qiáng)
  • 蘭州網(wǎng)站哪里做怎么做推廣和宣傳平臺
  • 戀愛網(wǎng)站建設(shè)谷歌推廣怎么樣
  • 免費(fèi)合同模板網(wǎng)站海底撈口碑營銷
  • 成都網(wǎng)站建設(shè)服務(wù)全搜網(wǎng)
  • 懷化市委網(wǎng)站網(wǎng)站快速排名互點(diǎn)軟件