最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++結(jié)構(gòu)體初始化的10種寫法總結(jié)

 更新時間:2024年04月03日 10:20:19   作者:Android系統(tǒng)攻城獅  
這篇文章主要為大家詳細(xì)介紹了10種C++中結(jié)構(gòu)體初始化的寫法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1.前言

本篇目的:C++之結(jié)構(gòu)體初始化10種方式總結(jié)

2.C++中的結(jié)構(gòu)體(struct)和類(class)區(qū)別

C++中的結(jié)構(gòu)體(struct)和類(class)是兩種用于封裝數(shù)據(jù)和相關(guān)操作的復(fù)合數(shù)據(jù)類型。盡管它們在許多方面相似,但它們在C++中的使用和設(shè)計理念上存在一些關(guān)鍵差異。

首先,從語法角度看,結(jié)構(gòu)體和類的基本定義形式非常相似。它們都允許我們定義數(shù)據(jù)成員(即變量)和成員函數(shù)(即函數(shù)),以便我們可以對數(shù)據(jù)進行操作。然而,在C++中,結(jié)構(gòu)體默認(rèn)是公有(public)的,這意味著其成員默認(rèn)是公開的,可以直接訪問。相反,類默認(rèn)是私有的(private),這意味著其成員默認(rèn)是隱藏的,需要通過公有成員函數(shù)進行訪問。

這種默認(rèn)訪問權(quán)限的差異反映了結(jié)構(gòu)體和類在C++中的設(shè)計理念。結(jié)構(gòu)體通常被用于將一組數(shù)據(jù)聚合在一起,形成一個邏輯上的整體,這些數(shù)據(jù)成員通常是可以直接訪問的。而類則更強調(diào)封裝和隱藏內(nèi)部狀態(tài),通過公有成員函數(shù)提供對內(nèi)部數(shù)據(jù)的訪問和操作,從而保護數(shù)據(jù)的完整性和安全性。

此外,類還提供了更多的特性,如繼承、多態(tài)和模板等,這些特性使得類在構(gòu)建大型、復(fù)雜的軟件系統(tǒng)時更加靈活和強大。結(jié)構(gòu)體雖然也可以實現(xiàn)一些基本的封裝和抽象,但在這些高級特性上則顯得力不從心。

總的來說,結(jié)構(gòu)體和類在C++中都是用于封裝數(shù)據(jù)和操作的復(fù)合數(shù)據(jù)類型,但它們在默認(rèn)訪問權(quán)限、設(shè)計理念以及提供的特性上存在差異。選擇使用結(jié)構(gòu)體還是類,應(yīng)根據(jù)具體的應(yīng)用場景和需求來決定。對于簡單的數(shù)據(jù)聚合,可以使用結(jié)構(gòu)體;對于需要更復(fù)雜封裝和抽象的場景,則應(yīng)使用類。

3.代碼實例

直接初始化

struct MyStruct {
    int x;
    double y;
};

MyStruct s1 = {10, 3.14};

使用成員初始化列表

struct MyStruct {
    int x;
    double y;
};

MyStruct s2 = { .x = 10, .y = 3.14 };

默認(rèn)初始化并逐個賦值

struct MyStruct {
    int x;
    double y;
};

MyStruct s3;
s3.x = 10;
s3.y = 3.14;

使用構(gòu)造函數(shù)初始化

struct MyStruct {
    int x;
    double y;
    MyStruct(int a, double b) : x(a), y(b) {}
};

MyStruct s4(10, 3.14);

使用默認(rèn)構(gòu)造函數(shù)初始化

struct MyStruct {
    int x;
    double y;
};

???????MyStruct s5{};
s5.x = 10;
s5.y = 3.14;

使用列表初始化

struct MyStruct {
    int x;
    double y;
};

???????MyStruct s6{};
s6 = {10, 3.14};

使用無名稱的臨時結(jié)構(gòu)體對象

struct MyStruct {
    int x;
    double y;
};

???????MyStruct s7 = MyStruct{10, 3.14};

使用emplace_back()

struct MyStruct {
    int x;
    double y;
};

???????std::vector<MyStruct> vec;
vec.emplace_back(10, 3.14);

使用std::make_pair()

struct MyStruct {
    int x;
    double y;
};

???????std::pair<int, double> p = std::make_pair(10, 3.14);
MyStruct s8 = {p.first, p.second};

使用memcpy()

struct MyStruct {
    int x;
    double y;
};

MyStruct s9;
int tempX = 10;
double tempY = 3.14;
std::memcpy(&s9, &MyStruct{tempX, tempY}, sizeof(MyStruct));

使用無名稱的臨時結(jié)構(gòu)體對象實例代碼 V1.0

#include <iostream>
using namespace std;

struct BinderHandle1 {
  int32_t handle;
};

class BpBinder1 {
public:
  BpBinder1(BinderHandle1 handle) {
    this->handle = handle;
  }
private:
  BinderHandle1 handle;
};

struct BinderHandle2 {
  int32_t handle;
  string data;
};

class BpBinder2 {
public:
  BpBinder2(BinderHandle2 handle) {
    this->handle = handle;
  }
private:
  BinderHandle2 handle;
};

int main() {
  int handle = 100;
  BpBinder1 *bp = new BpBinder1(BinderHandle1{handle});
  delete bp;

  BpBinder2 *bp2 = new BpBinder2(BinderHandle2{handle,"124"});  
  return 0;
}

使用無名稱的臨時結(jié)構(gòu)體對象實例代碼 V2.0

#include <iostream>
using namespace std;

struct BinderHandle2 {
  int32_t handle;
  string data;
};

class BpBinder2 {
public:
  BpBinder2(BinderHandle2 handle) {
    this->handle = handle;
    printf("xxx--------------->%s(), line = %d, handle = %d\n",__FUNCTION__,__LINE__,this->handle.handle);
    printf("xxx--------------->%s(), line = %d, data = %s\n",__FUNCTION__,__LINE__,this->handle.data.c_str());
  }
private:
  BinderHandle2 handle;
};

int main() {
  int handle = 100;
  BpBinder2 *bp2 = new BpBinder2(BinderHandle2{handle,"124"});

  delete bp2;
  return 0;
}

到此這篇關(guān)于C++結(jié)構(gòu)體初始化的10種寫法總結(jié)的文章就介紹到這了,更多相關(guān)C++結(jié)構(gòu)體初始化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)反轉(zhuǎn)鏈表的兩種方法

    C++實現(xiàn)反轉(zhuǎn)鏈表的兩種方法

    本文主要介紹了C++實現(xiàn)反轉(zhuǎn)鏈表的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C++ string 字符串查找匹配實例代碼

    C++ string 字符串查找匹配實例代碼

    下面小編就為大家?guī)硪黄狢++ string 字符串查找匹配實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 使用Matlab制作簡易版八分音符醬游戲

    使用Matlab制作簡易版八分音符醬游戲

    八分音符醬作為一款聲音控制類游戲,當(dāng)時還是很受大家的喜愛的。本文將用Matlab制作一款簡易版的八分音符醬游戲,感興趣的可以學(xué)習(xí)一下
    2022-02-02
  • Qt實現(xiàn)字幕無間隙滾動效果

    Qt實現(xiàn)字幕無間隙滾動效果

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實現(xiàn)字幕無間隙滾動效果,文中的實現(xiàn)過程講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-11-11
  • 利用c++判斷水仙花數(shù)并輸出示例代碼

    利用c++判斷水仙花數(shù)并輸出示例代碼

    水仙花數(shù)是指一個三位數(shù),其各位數(shù)字的立方和恰好等于該數(shù)本身,這篇文章主要介紹了利用c++判斷水仙花數(shù)并輸出的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-12-12
  • C++ 冒泡排序數(shù)據(jù)結(jié)構(gòu)、算法及改進算法

    C++ 冒泡排序數(shù)據(jù)結(jié)構(gòu)、算法及改進算法

    冒泡排序是一種簡單排序。這種排序是采用“冒泡策略”將最大元素移到最右邊。在冒泡過程中,相鄰兩個元素比較,如果左邊大于右邊的,則進行交換兩個元素。這樣一次冒泡后,可確保最大的在最右邊。然后執(zhí)行n次冒泡后排序即可完畢
    2013-04-04
  • C語言的基本語法詳解

    C語言的基本語法詳解

    本篇文章主要講解C語言 基本語法,這里提供簡單的示例和代碼來詳細(xì)講解C語言的基本語法,開始學(xué)習(xí)C語言的朋友可以看一下,希望能夠給你帶來幫助
    2021-09-09
  • C++中的stack容器和queue容器操作代碼

    C++中的stack容器和queue容器操作代碼

    C++中stack和queue容器介紹,stack是一種先進后出的數(shù)據(jù)結(jié)構(gòu),而queue是一種先進先出的數(shù)據(jù)結(jié)構(gòu),本文通過實例代碼介紹C++中的stack容器和queue容器,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • C++多線程編程簡單實例

    C++多線程編程簡單實例

    本文給大家分享的是C++多線程編程簡單實例,由于C++本身沒有多線程機制,在windows下我們使用調(diào)用SDK win32 api來實現(xiàn),示例都很簡單,講解的也很詳細(xì),推薦給大家。
    2015-03-03
  • c++實現(xiàn)簡單隨機數(shù)的代碼

    c++實現(xiàn)簡單隨機數(shù)的代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于c++實現(xiàn)簡單隨機數(shù)的代碼內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-05-05

最新評論

色达县| 灵丘县| 厦门市| 霍邱县| 霍邱县| 定西市| 邵阳市| 汉川市| 建水县| 延津县| 武强县| 淅川县| 望都县| 遵义市| 武威市| 建阳市| 新乡县| 清涧县| 江安县| 石柱| 尤溪县| 县级市| 乐山市| 万山特区| 遵化市| 凤阳县| 黔西县| 缙云县| 绥芬河市| 宜黄县| 古丈县| 隆回县| 太仆寺旗| 阳城县| 陇西县| 九江县| 榆社县| 尖扎县| 儋州市| 永宁县| 沈阳市|