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

C++中的結(jié)構(gòu)體使用及說明

 更新時間:2025年10月14日 09:06:13   作者:帥氣小胖子  
C++中的結(jié)構(gòu)體是一種特殊的用戶自定義數(shù)據(jù)類型,它不僅包括數(shù)據(jù)成員,還可以包括成員函數(shù),并支持繼承、多態(tài)等面向?qū)ο筇匦?是C語言中結(jié)構(gòu)體的超集,與C++中的類基本相似,主要區(qū)別在于默認(rèn)的訪問權(quán)限和繼承方式

C++中很特殊的一類自定義數(shù)據(jù)-結(jié)構(gòu)體

為什么說C++中的結(jié)構(gòu)體特殊,因?yàn)樗床煌贑中的結(jié)構(gòu)體,基本和C++中的Class也是不同的

一、C++ 結(jié)構(gòu)體(struct)簡介

在 C++ 中,struct 是一種用戶自定義的數(shù)據(jù)類型,它不僅可以包含數(shù)據(jù)成員(變量),還可以包含成員函數(shù)(方法),支持繼承、多態(tài)等面向?qū)ο筇匦?/strong>。(重點(diǎn),需要記住)。

C++ 的 struct 是 C 語言 struct 的超集,同時也是一種特殊的類(class)。(這句話就很好的總結(jié)了C++中struct和c中struct的關(guān)系和C++中的Class的關(guān)系)

二、C 語言中的結(jié)構(gòu)體

在 C 語言 中,struct 僅用于聚合數(shù)據(jù),不能包含成員函數(shù),也不支持訪問控制和繼承。

示例(C 語言)

運(yùn)行

#include <stdio.h>

struct Point {
    int x;
    int y;
};

int main() {
    struct Point p1 = {10, 20};
    printf("x = %d, y = %d\n", p1.x, p1.y);
    return 0;
}

特點(diǎn)

  • 只能包含數(shù)據(jù)成員
  • 所有成員默認(rèn)為 public
  • 不能有成員函數(shù)
  • 不支持繼承、多態(tài)
  • 聲明變量時必須帶 struct 關(guān)鍵字(除非用 typedef

三、C++ 中的結(jié)構(gòu)體

C++ 保留了 C 語言 struct 的所有功能,同時增加了面向?qū)ο筇匦浴?/p>

示例(C++ 結(jié)構(gòu)體)

運(yùn)行

#include <iostream>
using namespace std;

struct Point {
    int x;
    int y;

    // 成員函數(shù)
    void print() {
        cout << "x = " << x << ", y = " << y << endl;
    }

    // 構(gòu)造函數(shù)
    Point(int a, int b) : x(a), y(b) {}
};

int main() {
    Point p1(10, 20); // 直接創(chuàng)建對象
    p1.print();
    return 0;
}

特點(diǎn)

  1. 可以包含成員函數(shù)(方法)
  2. 支持構(gòu)造函數(shù)析構(gòu)函數(shù)
  3. 支持訪問控制(public / private / protected)
  4. 支持繼承
  5. 支持多態(tài)(虛函數(shù))
  6. 默認(rèn)訪問權(quán)限為 public(與 class 不同)
  7. 默認(rèn)繼承方式為 public(與 class 不同)

四、C++ struct 與 C struct 的區(qū)別

特性C 語言 structC++ struct
成員類型只能是數(shù)據(jù)成員可以是數(shù)據(jù)成員 + 成員函數(shù)
訪問控制無(默認(rèn)為 public)支持 public /private/protected
構(gòu)造函數(shù)不支持支持
繼承不支持支持
多態(tài)(虛函數(shù))不支持支持
使用 struct 關(guān)鍵字聲明變量必須帶 struct可直接用結(jié)構(gòu)體名作為類型名
初始化僅支持聚合初始化支持聚合初始化 + 構(gòu)造函數(shù)初始化

五、C++ struct 與 class 的區(qū)別

在 C++ 中,struct 和 class 幾乎完全相同,唯一的區(qū)別在于默認(rèn)訪問權(quán)限默認(rèn)繼承方式。

對比項(xiàng)structclass
默認(rèn)成員訪問權(quán)限publicprivate
默認(rèn)繼承方式publicprivate
其他特性完全一致(構(gòu)造函數(shù)、析構(gòu)函數(shù)、虛函數(shù)、模板等)完全一致

示例(默認(rèn)訪問權(quán)限差異)

運(yùn)行

struct S {
    int a; // 默認(rèn) public
};

class C {
    int a; // 默認(rèn) private
};

int main() {
    S s;
    s.a = 10; // OK,public 成員

    C c;
    // c.a = 10; // 錯誤!a 是 private 成員
}

示例(默認(rèn)繼承方式差異)

運(yùn)行

struct Base {
    int x;
};

struct Derived1 : Base { };         // 默認(rèn) public 繼承
class  Derived2 : Base { };         // 默認(rèn) private 繼承

int main() {
    Derived1 d1;
    d1.x = 10; // OK,public 繼承

    Derived2 d2;
    // d2.x = 10; // 錯誤!Base::x 在 Derived2 中是 private
}

六、使用建議

C++ struct 通常用于:

  1. 僅包含數(shù)據(jù),沒有或只有少量簡單方法(類似 C 結(jié)構(gòu)體的用途)
  2. 與 C 語言兼容的接口定義

C++ class 通常用于:

  1. 需要封裝、繼承、多態(tài)的復(fù)雜類型
  2. 強(qiáng)調(diào)數(shù)據(jù)隱藏和接口暴露的面向?qū)ο笤O(shè)計(jì)

 總結(jié)

C++ struct 是 C struct 的超集,增加了成員函數(shù)、訪問控制、繼承、多態(tài)等面向?qū)ο筇匦浴?/p>

與 C++ class 的唯一區(qū)別在于默認(rèn)訪問權(quán)限默認(rèn)繼承方式

  • struct:默認(rèn) public 成員 & public 繼承
  • class:默認(rèn) private 成員 & private 繼承

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 基于C/C++ 常見誤區(qū)詳解

    基于C/C++ 常見誤區(qū)詳解

    本篇文章介紹了在c和c++中一些常見誤區(qū)的詳細(xì)概述。需要的朋友參考下
    2013-05-05
  • C++成員解除引用運(yùn)算符的示例詳解

    C++成員解除引用運(yùn)算符的示例詳解

    這篇文章主要介紹了C++成員解除引用運(yùn)算符,本例子在編譯期間給指針賦值,在更為復(fù)雜的類中,可以使用指向數(shù)據(jù)成員和方法的成員指針,需要的朋友可以參考下
    2022-01-01
  • C++控制臺循環(huán)鏈表實(shí)現(xiàn)貪吃蛇

    C++控制臺循環(huán)鏈表實(shí)現(xiàn)貪吃蛇

    這篇文章主要為大家詳細(xì)介紹了C++控制臺循環(huán)鏈表實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C語言接口與實(shí)現(xiàn)方法實(shí)例詳解

    C語言接口與實(shí)現(xiàn)方法實(shí)例詳解

    這篇文章主要介紹了C語言接口與實(shí)現(xiàn)方法,包括接口的概念、實(shí)現(xiàn)方法及抽象數(shù)據(jù)類型等,并配合實(shí)例予以說明,需要的朋友可以參考下
    2014-09-09
  • C++ vector操作實(shí)現(xiàn)

    C++ vector操作實(shí)現(xiàn)

    這篇文章主要介紹了C++ vector操作實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C指針原理教程之C內(nèi)嵌匯編

    C指針原理教程之C內(nèi)嵌匯編

    在學(xué)習(xí) C 語言內(nèi)嵌匯編的實(shí)驗(yàn)過程中,發(fā)現(xiàn)內(nèi)嵌匯編極容易造成段錯誤。
    2019-02-02
  • c語言循環(huán)加數(shù)組實(shí)現(xiàn)漢諾塔問題

    c語言循環(huán)加數(shù)組實(shí)現(xiàn)漢諾塔問題

    本文主要介紹了c語言循環(huán)加數(shù)組實(shí)現(xiàn)漢諾塔問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 在Qt中使用QString進(jìn)行字符串截取的多種方法

    在Qt中使用QString進(jìn)行字符串截取的多種方法

    本文詳細(xì)介紹了在Qt中使用QString進(jìn)行字符串截取的多種方法:left()和right()分別用于截取字符串的左右指定長度子串;mid()支持從任意位置截取;section()通過分隔符提取特定區(qū)段;chopped()可快速移除末尾字符,文章通過代碼示例展示了各方法的用法
    2026-01-01
  • VC中LINK 2001 和 LINK 2009 的錯誤的解決方法

    VC中LINK 2001 和 LINK 2009 的錯誤的解決方法

    最近將兩個開源C++項(xiàng)目編譯成windows版本的時候遇到很多問題,編譯的時候總是報(bào)錯,報(bào)的最多的是無法解析的外部符號”,經(jīng)過近3天的折騰總算都通過了,這里是一些總結(jié)
    2020-10-10
  • 將正小數(shù)轉(zhuǎn)化為2-9進(jìn)制小數(shù)的實(shí)現(xiàn)方法

    將正小數(shù)轉(zhuǎn)化為2-9進(jìn)制小數(shù)的實(shí)現(xiàn)方法

    本篇文章對正小數(shù)轉(zhuǎn)化為2-9進(jìn)制小數(shù)的實(shí)現(xiàn)方法進(jìn)行了介紹,需要的朋友參考下
    2013-05-05

最新評論

平度市| 若尔盖县| 武清区| 兴隆县| 安阳县| 灌南县| 辽阳市| 香河县| 万盛区| 将乐县| 盘山县| 原阳县| 定州市| 浪卡子县| 西藏| 云南省| 松桃| 杭锦旗| 彰化市| 惠州市| 扎赉特旗| 筠连县| 武平县| 将乐县| 沽源县| 巩留县| 安顺市| 三门县| 景洪市| 贵港市| 深圳市| 岱山县| 漠河县| 桂平市| 长白| 安仁县| 台南市| 安丘市| 米林县| 哈巴河县| 福清市|