色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++中位域以及union聯合詳解

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2021-09-24 11:31 ? 次閱讀

位域

Bit mode:2;//mode 占 2 位

類可以將其(非靜態)數據成員定義為位域(bit-field),在一個位域中含有一定數量的二進制位。當一個程序需要向其他程序或硬件設備傳遞二進制數據時,通常會用到位域。

位域在內存中的布局是與機器有關的

位域的類型必須是整型或枚舉類型,帶符號類型中的位域的行為將因具體實現而定

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

extern “C”

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

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

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

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;

等價于

// cstruct Student { int age; };

typedef struct Student S;

此時 S 等價于 struct Student,但兩個標識符名稱空間不相同。

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

C++ 中

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

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

即表現為可以使用 Student 也可以使用 struct Student,如下:

// cppstruct Student { int age; };

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

二、若定義了與 Student 同名函數之后,則 Student 只代表函數,不代表結構體,如下:

typedef struct Student { int age; } S;

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

//void S() {} // 錯誤,符號 “S” 已經被定義為一個 “struct Student” 的別名

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

C++ 中 struct 和 class

總的來說,struct 更適合看成是一個數據結構的實現體,class 更適合看成是一個對象的實現體。

區別

最本質的一個區別就是默認的訪問控制

(1)默認的繼承訪問權限。struct 是 public 的,class 是 private 的。

(2)struct 作為數據結構的實現體,它默認的數據訪問控制是 public 的,而 class 作為對象的實現體,它默認的成員變量訪問控制是 private 的。

union 聯合

聯合(union)是一種節省空間的特殊的類,一個 union 可以有多個數據成員,但是在任意時刻只有一個數據成員可以有值。當某個成員被賦值后其他成員變為未定義狀態。聯合有如下特點:

默認訪問控制符為 public

可以含有構造函數、析構函數

不能含有引用類型的成員

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

不能含有虛函數

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

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

全局匿名聯合必須是靜態(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 聯合的 10

::i = 20; std::cout 《《 ::i 《《 std::endl; // 輸出全局靜態匿名聯合的 20

i = 30; std::cout 《《 i 《《 std::endl; // 輸出局部匿名聯合的 30

return 0;}

C 實現 C++ 類

C 實現 C++ 的面向對象特性(封裝、繼承、多態)

(1)封裝:使用函數指針把屬性與方法封裝到結構體中

(2)繼承:結構體嵌套

(3)多態:父類與子類方法的函數指針不同

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

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3623

    瀏覽量

    93798
  • C++
    C++
    +關注

    關注

    22

    文章

    2110

    瀏覽量

    73696

原文標題:C++基礎語法梳理:位域以及 union 聯合!小知識分享

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    EE-112:模擬C++的類實現

    電子發燒友網站提供《EE-112:模擬C++的類實現.pdf》資料免費下載
    發表于 01-03 15:15 ?0次下載
    EE-112:模擬<b class='flag-5'>C++</b><b class='flag-5'>中</b>的類實現

    C語言和C++結構體的區別

    同樣是結構體,看看在C語言和C++中有什么區別?
    的頭像 發表于 10-30 15:11 ?262次閱讀

    C7000優化C/C++編譯器

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

    ostream在c++的用法

    ostream 是 C++ 標準庫中一個非常重要的類,它位于 頭文件(實際上,更常見的是通過包含 頭文件來間接包含 ,因為 包含了 和 )。 ostream 類及其派生類(如 std::cout
    的頭像 發表于 09-20 15:11 ?767次閱讀

    ModusToolbox 3.2在c代碼包含c++代碼的正確步驟是什么?

    使用 ModusToolbox 3.2 我有一個用純 C 語言編寫的 XMC4700 項目。 我正在嘗試添加一些 C++ 函數,并將其合并到我的原始代碼。 我可以構建獨立的 .cpp/.hpp
    發表于 07-23 08:21

    C++語言基礎知識

    電子發燒友網站提供《C++語言基礎知識.pdf》資料免費下載
    發表于 07-19 10:58 ?7次下載

    C++實現類似instanceof的方法

    函數,可實際上C++沒有。但是別著急,其實C++中有兩種簡單的方法可以實現類似Java的instanceof的功能。 在 C++
    的頭像 發表于 07-18 10:16 ?608次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>中</b>實現類似instanceof的方法

    C/C++兩種宏實現方式

    #ifndef的方式受C/C++語言標準支持。它不僅可以保證同一個文件不會被包含多次,也能保證內容完全相同的兩個文件(或者代碼片段)不會被不小心同時包含。
    的頭像 發表于 04-19 11:50 ?653次閱讀

    鴻蒙OS開發實例:【Native C++

    使用DevEco Studio創建一個Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用C標準庫hypot接口計算兩個給定數平方和的平
    的頭像 發表于 04-14 11:43 ?2674次閱讀
    鴻蒙OS開發實例:【Native <b class='flag-5'>C++</b>】

    鴻蒙TypeScript學習第14天:【聯合類型】

    聯合類型(Union Types)可以通過管道(|)將變量設置多種類型,賦值時可以根據設置的類型來賦值。
    的頭像 發表于 04-12 15:28 ?464次閱讀
    鴻蒙TypeScript學習第14天:【<b class='flag-5'>聯合</b>類型】

    使用 MISRA C++:2023? 避免基于范圍的 for 循環中的錯誤

    在前兩篇博客,我們?向您介紹了新的 MISRA C++ 標準?和?C++ 的歷史?。在這篇博客,我們將仔細研究以 C++
    的頭像 發表于 03-28 13:53 ?821次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環中的錯誤

    C語言中的典型的實例

    所謂""是把一個字節的二進位劃分為幾個不同的區域,并說明每個區域的位數。每個有一個域名,允許在程序按域名進行操作。這樣就可以把幾個
    發表于 03-04 11:29 ?480次閱讀
    <b class='flag-5'>C</b>語言中的<b class='flag-5'>位</b><b class='flag-5'>域</b>典型的實例

    c語言,c++,java,python區別

    操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是學習其他高級語言的入門語言。 C++C++是在C語言的基礎上進行擴展和改進的一種編程語言。它支
    的頭像 發表于 02-05 14:11 ?2446次閱讀

    STM32開發運算以及帶操作

    STM32開發運算以及帶操作? 運算是計算機中常用的一種操作方式,特別適用于對數據的單個或多個位進行操作。在STM32開發
    的頭像 發表于 02-02 14:38 ?1710次閱讀

    C++簡史:C++是如何開始的

    的 MISRA C++:2023 博客系列的第二部分。 在這篇博客,我們將深入探討 C++ 的歷史、編程語言多年來的發展歷程以及它的下一步發展方向。
    的頭像 發表于 01-11 09:00 ?620次閱讀
    <b class='flag-5'>C++</b>簡史:<b class='flag-5'>C++</b>是如何開始的
    主站蜘蛛池模板: 午夜理伦大片一级| 欧美ⅹxxxx18性欧美| 久久机热视频 这里只有精品首页| 日韩一区二区三区四区区区 | 久久精品一本到东京热| 手机免费毛片| 成人免费视频在线看| 秋霞电影网午夜鲁丝片无码| 99精品国产福利在线观看| 龙岩综合频道| 国产亚洲精品久久7777777| 日本熟妇乱妇熟色A片蜜桃亚洲| 99E久热只有精品8在线直播| 榴莲推广APP网站入口官网| 伊人久久亚洲综合天堂| 久久99免费视频| 一二三四在线视频社区8| 精品无码无人网站免费视频| 亚洲午夜精品aaa级久久久久| 狠狠色狠狠色综合系列| 夜月视频直播免费观看| 久久精品亚洲国产AV涩情| 18女下面流水不遮网站免费| 恋夜影视列表免费安卓手机版 | 国内精品久久久久久久试看| 亚洲AV国产国产久青草| 寂寞护士中文字幕 mp4| 欧美久久综合网| A国产一区二区免费入口| 欧美精品成人久久网站| 成人天堂资源WWW在线| 天天综合亚洲综合网站| 国产午夜精品一区二区三区| 亚洲日韩成人| 妈妈的朋友6未删减版完整在线| 99视频精品国产免费观看| 青青草视频在线ac| 国产精品久久久久成人免费| 亚洲七七久久桃花综合| 美女挑战50厘米长的黑人| 岛国在线永久免费视频|