18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++中位域以及union聯(lián)合詳解

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 作者:C語言編程學(xué)習(xí)基地 ? 2021-09-24 11:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

位域

Bit mode:2;//mode 占 2 位

類可以將其(非靜態(tài))數(shù)據(jù)成員定義為位域(bit-field),在一個(gè)位域中含有一定數(shù)量的二進(jìn)制位。當(dāng)一個(gè)程序需要向其他程序或硬件設(shè)備傳遞二進(jìn)制數(shù)據(jù)時(shí),通常會(huì)用到位域。

位域在內(nèi)存中的布局是與機(jī)器有關(guān)的

位域的類型必須是整型或枚舉類型,帶符號類型中的位域的行為將因具體實(shí)現(xiàn)而定

取地址運(yùn)算符(&)不能作用于位域,任何指針都無法指向類的位域

extern “C”

(1)被 extern 限定的函數(shù)或變量是 extern 類型的

(2)被 extern “C” 修飾的變量和函數(shù)是按照 C 語言方式編譯和鏈接的

extern “C” 的作用是讓 C++ 編譯器將 extern “C” 聲明的代碼當(dāng)作 C 語言代碼處理,可以避免 C++ 因符號修飾導(dǎo)致代碼不能和C語言庫中的符號進(jìn)行鏈接的問題。

extern “C” 使用

#ifdef __cplusplusextern “C” {#endif

void *memset(void *, int, size_t);

#ifdef __cplusplus}#endif

struct 和 typedef struct

C 中

// ctypedef struct Student { int age; } S;

等價(jià)于

// cstruct Student { int age; };

typedef struct Student S;

此時(shí) S 等價(jià)于 struct Student,但兩個(gè)標(biāo)識符名稱空間不相同。

另外還可以定義與 struct Student 不沖突的 void Student() {}。

C++ 中

由于編譯器定位符號的規(guī)則(搜索規(guī)則)改變,導(dǎo)致不同于C語言。

一、如果在類標(biāo)識符空間定義了 struct Student {。..};,使用 Student me; 時(shí),編譯器將搜索全局標(biāo)識符表,Student 未找到,則在類標(biāo)識符內(nèi)搜索。

即表現(xiàn)為可以使用 Student 也可以使用 struct Student,如下:

// cppstruct Student { int age; };

void f( Student me ); // 正確,“struct” 關(guān)鍵字可省略

二、若定義了與 Student 同名函數(shù)之后,則 Student 只代表函數(shù),不代表結(jié)構(gòu)體,如下:

typedef struct Student { int age; } S;

void Student() {} // 正確,定義后 “Student” 只代表此函數(shù)

//void S() {} // 錯(cuò)誤,符號 “S” 已經(jīng)被定義為一個(gè) “struct Student” 的別名

int main() { Student(); struct Student me; // 或者 “S me”; return 0;}

C++ 中 struct 和 class

總的來說,struct 更適合看成是一個(gè)數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)體,class 更適合看成是一個(gè)對象的實(shí)現(xiàn)體。

區(qū)別

最本質(zhì)的一個(gè)區(qū)別就是默認(rèn)的訪問控制

(1)默認(rèn)的繼承訪問權(quán)限。struct 是 public 的,class 是 private 的。

(2)struct 作為數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)體,它默認(rèn)的數(shù)據(jù)訪問控制是 public 的,而 class 作為對象的實(shí)現(xiàn)體,它默認(rèn)的成員變量訪問控制是 private 的。

union 聯(lián)合

聯(lián)合(union)是一種節(jié)省空間的特殊的類,一個(gè) union 可以有多個(gè)數(shù)據(jù)成員,但是在任意時(shí)刻只有一個(gè)數(shù)據(jù)成員可以有值。當(dāng)某個(gè)成員被賦值后其他成員變?yōu)槲炊x狀態(tài)。聯(lián)合有如下特點(diǎn):

默認(rèn)訪問控制符為 public

可以含有構(gòu)造函數(shù)、析構(gòu)函數(shù)

不能含有引用類型的成員

不能繼承自其他類,不能作為基類

不能含有虛函數(shù)

匿名 union 在定義所在作用域可直接訪問 union 成員

匿名 union 不能包含 protected 成員或 private 成員

全局匿名聯(lián)合必須是靜態(tài)(static)的

union 使用

#include《iostream》

union UnionTest { UnionTest() : i(10) {}; int i; double d;};

static union { int i; double d;};

int main() { UnionTest u;

union { int i; double d; };

std::cout 《《 u.i 《《 std::endl; // 輸出 UnionTest 聯(lián)合的 10

::i = 20; std::cout 《《 ::i 《《 std::endl; // 輸出全局靜態(tài)匿名聯(lián)合的 20

i = 30; std::cout 《《 i 《《 std::endl; // 輸出局部匿名聯(lián)合的 30

return 0;}

C 實(shí)現(xiàn) C++ 類

C 實(shí)現(xiàn) C++ 的面向?qū)ο筇匦裕ǚ庋b、繼承、多態(tài))

(1)封裝:使用函數(shù)指針把屬性與方法封裝到結(jié)構(gòu)體中

(2)繼承:結(jié)構(gòu)體嵌套

(3)多態(tài):父類與子類方法的函數(shù)指針不同

寫在最后:對于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    89

    文章

    3704

    瀏覽量

    96388
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2120

    瀏覽量

    76557

原文標(biāo)題:C++基礎(chǔ)語法梳理:位域以及 union 聯(lián)合!小知識分享

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    C/C++代碼靜態(tài)測試工具Perforce QAC 2025.3的新特性

    對?Perforce Validate??QAC?項(xiàng)目的相對/根路徑的支持。C++?分析也得到了增強(qiáng),增加了用于檢測 C++?并發(fā)問題的新檢查,并改進(jìn)了實(shí)體名稱和實(shí)
    的頭像 發(fā)表于 10-13 18:11 ?140次閱讀
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代碼靜態(tài)測試工具Perforce QAC 2025.3的新特性

    技能+1!如何在樹莓派上使用C++控制GPIO?

    和PiGPIO等庫,C++可用于編程控制樹莓派的GPIO引腳。它提供了更好的性能和控制能力,非常適合對速度和精度要求較高的硬件項(xiàng)目。在樹莓派社區(qū),關(guān)于“Python
    的頭像 發(fā)表于 08-06 15:33 ?3183次閱讀
    技能+1!如何在樹莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?

    在單片機(jī)的地界兒里,C語言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。先說內(nèi)存這道坎兒。您當(dāng)stm32f4的256kRAM
    的頭像 發(fā)表于 05-21 10:33 ?706次閱讀
    主流的 MCU 開發(fā)語言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    C語言中結(jié)構(gòu)體與聯(lián)合體的深度解析:內(nèi)存布局與應(yīng)用場景

    :實(shí)現(xiàn)可變類型數(shù)據(jù)存儲(chǔ),節(jié)省內(nèi)存空間 3.2 聯(lián)合體內(nèi)存操作 union MemoryTest { struct { char a; int b; } s; double c
    發(fā)表于 04-08 09:18

    創(chuàng)建了用于OpenVINO?推理的自定義C++和Python代碼,從C++代碼獲得的結(jié)果與Python代碼不同是為什么?

    創(chuàng)建了用于OpenVINO?推理的自定義 C++ 和 Python* 代碼。 在兩個(gè)推理過程中使用相同的圖像和模型。 從 C++ 代碼獲得的結(jié)果與 Python* 代碼不同。
    發(fā)表于 03-06 06:22

    從Delphi、C++ Builder和Lazarus連接到MySQL數(shù)據(jù)庫

    ? 從 Delphi、C++ Builder 和 Lazarus 連接到 MySQL 數(shù)據(jù)庫 MySQL 數(shù)據(jù)訪問組件(MyDAC)是一個(gè)組件庫,提供從 Delphi 和 C++ Builder
    的頭像 發(fā)表于 01-20 13:47 ?1138次閱讀
    從Delphi、<b class='flag-5'>C++</b> Builder和Lazarus連接到MySQL數(shù)據(jù)庫

    從Delphi、C++ Builder和Lazarus連接到Oracle數(shù)據(jù)庫

    從 Delphi、C++ Builder 和 Lazarus 連接到 Oracle 數(shù)據(jù)庫 Oracle 數(shù)據(jù)訪問組件 (ODAC) 是一個(gè)組件庫,它為 32 和 64 平臺(tái)提供從 Delphi
    的頭像 發(fā)表于 01-15 10:01 ?1210次閱讀

    Spire.XLS for C++組件說明

    Spire.XLS for C++ 是一款專業(yè)的 C++ Excel 組件,可以用在各種 C++ 框架和應(yīng)用程序。Spire.XLS for C+
    的頭像 發(fā)表于 01-14 09:40 ?1204次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    EE-112:模擬C++的類實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《EE-112:模擬C++的類實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 01-03 15:15 ?0次下載
    EE-112:模擬<b class='flag-5'>C++</b><b class='flag-5'>中</b>的類實(shí)現(xiàn)

    同樣是函數(shù),在CC++中有什么區(qū)別

    同樣是函數(shù),在 CC++ 中有什么區(qū)別? 第一個(gè)返回值。 C語言的函數(shù)可以不寫返回值類型,編譯器會(huì)默認(rèn)為返回 int。 但是 C++ 的函數(shù),除了構(gòu)造和析構(gòu)這兩個(gè)特殊的函數(shù),必須
    的頭像 發(fā)表于 11-29 10:25 ?1167次閱讀

    C7000 C/C++優(yōu)化指南用戶手冊

    電子發(fā)燒友網(wǎng)站提供《C7000 C/C++優(yōu)化指南用戶手冊.pdf》資料免費(fèi)下載
    發(fā)表于 11-09 15:00 ?0次下載
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>優(yōu)化指南用戶手冊

    TMS320C6000優(yōu)化C/C++編譯器v8.3.x

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000優(yōu)化C/C++編譯器v8.3.x.pdf》資料免費(fèi)下載
    發(fā)表于 11-01 09:35 ?1次下載
    TMS320<b class='flag-5'>C</b>6000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器v8.3.x

    TMS320C28x優(yōu)化C/C++編譯器v22.6.0.LTS

    電子發(fā)燒友網(wǎng)站提供《TMS320C28x優(yōu)化C/C++編譯器v22.6.0.LTS.pdf》資料免費(fèi)下載
    發(fā)表于 10-31 10:10 ?0次下載
    TMS320<b class='flag-5'>C</b>28x優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器v22.6.0.LTS

    C語言和C++結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?998次閱讀

    C7000優(yōu)化C/C++編譯器

    電子發(fā)燒友網(wǎng)站提供《C7000優(yōu)化C/C++編譯器.pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器