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

C++內(nèi)置類(lèi)型與自定義類(lèi)型的對(duì)比分析

 更新時(shí)間:2025年08月27日 08:55:06   作者:草莓熊Lotso  
本文對(duì)比了C與C++的類(lèi)型系統(tǒng),C內(nèi)置類(lèi)型簡(jiǎn)潔貼近硬件,C++擴(kuò)展了布爾、寬字符及固定大小類(lèi)型,并增強(qiáng)自定義類(lèi)型功能,支持封裝、繼承、多態(tài),提升代碼安全性與模塊化

前言:類(lèi)型系統(tǒng)是編程語(yǔ)言的基礎(chǔ),它定義了數(shù)據(jù)的表示方式、取值范圍和可執(zhí)行的操作。C 語(yǔ)言和 C++ 作為一脈相承又各有特色的語(yǔ)言,在類(lèi)型系統(tǒng)設(shè)計(jì)上既有延續(xù)性,又存在顯著差異。

本篇文章將深入探討兩種語(yǔ)言的內(nèi)置類(lèi)型和自定義類(lèi)型,分析它們的特點(diǎn)與應(yīng)用場(chǎng)景。

一.內(nèi)置類(lèi)型

內(nèi)置類(lèi)型(Primitive Types)是編程語(yǔ)言本身提供的基本數(shù)據(jù)類(lèi)型,它們直接映射到計(jì)算機(jī)硬件能夠高效處理的數(shù)據(jù)形式。

C 語(yǔ)言的內(nèi)置類(lèi)型

C 語(yǔ)言的內(nèi)置類(lèi)型簡(jiǎn)潔而貼近硬件,主要包括:

整數(shù)類(lèi)型

  • char:字符類(lèi)型,通常 1 字節(jié),可表示 ASCII 字符或小整數(shù)
  • short/short int:短整數(shù),通常 2 字節(jié)
  • int:整數(shù),通常 4 字節(jié),為系統(tǒng)最高效處理的整數(shù)類(lèi)型
  • long/long int:長(zhǎng)整數(shù),通常 4 或 8 字節(jié)
  • long long:雙長(zhǎng)整數(shù),通常 8 字節(jié)
  • 以上類(lèi)型均可加signed(有符號(hào))或unsigned(無(wú)符號(hào))修飾

浮點(diǎn)類(lèi)型

  • float:?jiǎn)尉雀↑c(diǎn)數(shù),通常 4 字節(jié)
  • double:雙精度浮點(diǎn)數(shù),通常 8 字節(jié)
  • long double:擴(kuò)展精度浮點(diǎn)數(shù),長(zhǎng)度因平臺(tái)而異

特殊類(lèi)型

  • void:表示 "無(wú)類(lèi)型",用于函數(shù)返回值或通用指針

示例:

#include <stdio.h>

int main() {
    char c = 'A';           // 字符類(lèi)型
    unsigned int age = 30;  // 無(wú)符號(hào)整數(shù)
    float pi = 3.14f;       // 單精度浮點(diǎn)數(shù)
    double e = 2.71828;     // 雙精度浮點(diǎn)數(shù)
    void* ptr = NULL;       // 通用指針
    
    printf("char大小: %zu字節(jié)\n", sizeof(c));
    printf("int大小: %zu字節(jié)\n", sizeof(age));
    return 0;
}

C++ 的內(nèi)置類(lèi)型

C++ 完全繼承了 C 的內(nèi)置類(lèi)型,并在此基礎(chǔ)上增加了一些擴(kuò)展:

  1. 布爾類(lèi)型bool,取值為truefalse,這是 C 語(yǔ)言沒(méi)有的原生類(lèi)型
  2. 寬字符類(lèi)型wchar_t(寬字符)、char16_t(UTF-16 字符)、char32_t(UTF-32 字符)
  3. C++11 后的固定大小整數(shù)類(lèi)型:如int32_t、uint64_t等(需包含<cstdint>

示例:

#include <iostream>
#include <cstdint>

int main() {
    bool flag = true;               // 布爾類(lèi)型
    int32_t exact_int = 123456;     // 固定32位有符號(hào)整數(shù)
    uint64_t big_uint = 1234567890ULL; // 固定64位無(wú)符號(hào)整數(shù)
    
    std::cout << "bool大小: " << sizeof(flag) << "字節(jié)\n";
    std::cout << "int32_t大小: " << sizeof(exact_int) << "字節(jié)\n";
    return 0;
}

C++ 的內(nèi)置類(lèi)型在 C 的基礎(chǔ)上增強(qiáng)了類(lèi)型安全性和對(duì)現(xiàn)代字符編碼的支持,bool類(lèi)型的引入使邏輯判斷更加清晰。

二.自定義類(lèi)型:開(kāi)發(fā)者構(gòu)建的數(shù)據(jù)結(jié)構(gòu)

自定義類(lèi)型(User-Defined Types)允許開(kāi)發(fā)者根據(jù)需求創(chuàng)建新的數(shù)據(jù)類(lèi)型,是構(gòu)建復(fù)雜程序的基礎(chǔ)。

C 語(yǔ)言的自定義類(lèi)型

C 語(yǔ)言提供了有限但實(shí)用的自定義類(lèi)型機(jī)制:

  • 結(jié)構(gòu)體(struct):將不同類(lèi)型的變量組合在一起
// 定義點(diǎn)結(jié)構(gòu)體
struct Point {
    int x;
    int y;
};

// 定義學(xué)生結(jié)構(gòu)體
struct Student {
    char name[20];
    int age;
    float score;
    struct Point location; // 結(jié)構(gòu)體嵌套
};
  • 聯(lián)合體(union):所有成員共享同一塊內(nèi)存空間
// 可存儲(chǔ)不同類(lèi)型數(shù)據(jù)的聯(lián)合體
union Data {
    int i;
    float f;
    char str[20];
}; // 大小為20字節(jié)(最大成員的大?。?/pre>
  • 枚舉(enum):為整數(shù)常量定義有意義的名稱(chēng)
// 定義顏色枚舉
enum Color {
    RED,    // 0
    GREEN,  // 1
    BLUE    // 2
};

// 定義帶初始值的枚舉
enum Month {
    JAN = 1,
    FEB,
    MAR,
    // ... 其余月份
    DEC
};
  •  typedef :為現(xiàn)有類(lèi)型創(chuàng)建別名
typedef struct {
    int hours;
    int minutes;
    int seconds;
} Time; // 現(xiàn)在可以用Time代替struct定義

typedef unsigned long long ULL; // 為無(wú)符號(hào)長(zhǎng)long創(chuàng)建短別名

C 語(yǔ)言的自定義類(lèi)型本質(zhì)上是數(shù)據(jù)的聚合,缺乏對(duì)數(shù)據(jù)操作的封裝。

C++ 的自定義類(lèi)型

C++ 在 C 的基礎(chǔ)上極大地?cái)U(kuò)展了自定義類(lèi)型的能力,引入了面向?qū)ο蟮奶匦裕?/p>

  • 類(lèi)(class):C++ 的核心,將數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)封裝在一起
class Circle {
private:
    // 私有成員(數(shù)據(jù)隱藏)
    double radius;
    const double PI = 3.14159;
    
public:
    // 構(gòu)造函數(shù)(初始化對(duì)象)
    Circle(double r) : radius(r) {}
    
    // 成員函數(shù)(操作數(shù)據(jù))
    double getArea() const {
        return PI * radius * radius;
    }
    
    void setRadius(double r) {
        if (r > 0) radius = r; // 可以加入數(shù)據(jù)驗(yàn)證
    }
};
  • 結(jié)構(gòu)體(struct):在 C++ 中與 class 類(lèi)似,區(qū)別在于默認(rèn)訪(fǎng)問(wèn)權(quán)限為 public
struct Rectangle {
    double width;
    double height;
    
    // C++結(jié)構(gòu)體可以有成員函數(shù)
    double area() const {
        return width * height;
    }
};
  •  聯(lián)合體(union):C++11 后支持包含非 POD 類(lèi)型和成員函數(shù)
union Variant {
private:
    int i;
    float f;
    
public:
    Variant(int val) : i(val) {}
    Variant(float val) : f(val) {}
    
    int getInt() const { return i; }
    float getFloat() const { return f; }
};
  •  枚舉類(lèi)(enum class):類(lèi)型安全的枚舉,避免命名沖突
enum class Color {
    RED,
    GREEN,
    BLUE
};

enum class TrafficLight {
    RED,    // 與Color::RED不沖突
    YELLOW,
    GREEN
};
  • 其他自定義類(lèi)型 

- 模板類(lèi)型 :如std::vector、std::string等標(biāo)準(zhǔn)容器

- 類(lèi)型別名 **:using關(guān)鍵字(比 typedef 更靈活)

using IntPair = std::pair<int, int>;
using StringList = std::vector<std::string>;

C++ 的自定義類(lèi)型實(shí)現(xiàn)了數(shù)據(jù)與操作的封裝,支持訪(fǎng)問(wèn)控制、繼承、多態(tài)等面向?qū)ο筇匦?,極大地增強(qiáng)了代碼的模塊化和可維護(hù)性。

三.類(lèi)型系統(tǒng)的核心差異對(duì)比

特性C 語(yǔ)言C++
內(nèi)置類(lèi)型基礎(chǔ)整數(shù)、浮點(diǎn)、字符類(lèi)型,無(wú)布爾類(lèi)型繼承 C 的所有類(lèi)型,增加 bool、寬字符類(lèi)型和固定大小整數(shù)類(lèi)型
自定義類(lèi)型基礎(chǔ)struct、union、enum、typedef繼承 C 的所有形式并增強(qiáng)
面向?qū)ο笾С?/td>無(wú)有(class 為核心)
封裝性僅數(shù)據(jù)聚合,無(wú)訪(fǎng)問(wèn)控制支持?jǐn)?shù)據(jù)和函數(shù)封裝,有 public/private/protected 控制
類(lèi)型安全較弱,隱式轉(zhuǎn)換較多較強(qiáng),引入 enum class 等安全類(lèi)型
擴(kuò)展性有限強(qiáng)大,支持模板、繼承、多態(tài)等

實(shí)踐建議

1. C 語(yǔ)言 :

  • 利用 struct 組織相關(guān)數(shù)據(jù)
  • 使用 enum 使代碼更具可讀性
  • 合理使用 typedef 簡(jiǎn)化復(fù)雜類(lèi)型聲明
  • 注意 union 的內(nèi)存共享特性,避免數(shù)據(jù)訪(fǎng)問(wèn)沖突

2.C++ 語(yǔ)言 :

  • 優(yōu)先使用 class 封裝數(shù)據(jù)和操作
  • 用 enum class 替代傳統(tǒng) enum,提高類(lèi)型安全性
  • 利用 using 創(chuàng)建清晰的類(lèi)型別名
  • 充分利用標(biāo)準(zhǔn)庫(kù)提供的豐富自定義類(lèi)型(如std::stringstd::vector
  • 對(duì)于簡(jiǎn)單數(shù)據(jù)聚合可使用 struct,需要封裝和行為時(shí)使用 class

總結(jié)

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

相關(guān)文章

  • 一文詳解C語(yǔ)言操作符

    一文詳解C語(yǔ)言操作符

    這篇文章主要詳細(xì)介紹了C語(yǔ)言的操作符,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息

    C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息

    這篇文章主要介紹了C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C++遞歸線(xiàn)性陣列搜索數(shù)字的方法

    C++遞歸線(xiàn)性陣列搜索數(shù)字的方法

    這篇文章主要介紹了C++遞歸線(xiàn)性陣列搜索數(shù)字的方法,涉及C++遞歸及數(shù)組操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 深入C++中struct與class的區(qū)別分析

    深入C++中struct與class的區(qū)別分析

    本篇文章是對(duì)C++中struct與class的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ STL中容器string超詳細(xì)講解

    C++ STL中容器string超詳細(xì)講解

    STL是C++標(biāo)準(zhǔn)庫(kù)的重要組成部分,不僅是一個(gè)可復(fù)用的 組件庫(kù),而且是一個(gè)包羅數(shù)據(jù)結(jié)構(gòu)與算法的軟件框架,本文給大家介紹C++ STL中容器string超詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • C語(yǔ)言實(shí)現(xiàn)掃雷代碼

    C語(yǔ)言實(shí)現(xiàn)掃雷代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)掃雷代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • VScode編譯C++ 頭文件顯示not found的問(wèn)題

    VScode編譯C++ 頭文件顯示not found的問(wèn)題

    這篇文章主要介紹了VScode編譯C++ 頭文件顯示not found的問(wèn)題,本文給大家分享問(wèn)題解決方法,通過(guò)截圖的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-03-03
  • C++數(shù)組指針和二維數(shù)組詳情

    C++數(shù)組指針和二維數(shù)組詳情

    這篇文章主要介紹了C++數(shù)組指針和二維數(shù)組,指針數(shù)組和二維數(shù)組在應(yīng)用中常用于函數(shù)傳參,下面我們就來(lái)看看指針數(shù)組和二維數(shù)組在應(yīng)用中的具體使用吧,需要的朋友可以參考一下
    2021-10-10
  • C語(yǔ)言 函數(shù)指針(指向函數(shù)的指針)詳解

    C語(yǔ)言 函數(shù)指針(指向函數(shù)的指針)詳解

    本文主要介紹 C語(yǔ)言函數(shù)指針的知識(shí),這里整理了詳細(xì)的資料及示例代碼以便大家學(xué)習(xí)參考,有需要學(xué)習(xí)此部分知識(shí)的朋友可以參考下
    2016-08-08
  • C++ 二維數(shù)組參數(shù)傳遞的實(shí)現(xiàn)方法

    C++ 二維數(shù)組參數(shù)傳遞的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++ 二維數(shù)組參數(shù)傳遞的實(shí)現(xiàn)方法的相關(guān)資料,這里提供三種方法幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

雷波县| 绩溪县| 兰考县| 温泉县| 通渭县| 阜南县| 子长县| 台前县| 巴中市| 扬州市| 玉林市| 镇坪县| 鄂托克旗| 朔州市| 新化县| 弥勒县| 巫溪县| 高雄市| 正蓝旗| 甘孜| 滦南县| 武乡县| 临漳县| 玛曲县| 潮安县| 土默特左旗| 宁波市| 嘉义市| 大关县| 新郑市| 大厂| 柳州市| 镶黄旗| 夹江县| 左权县| 建始县| 大名县| 来安县| 锡林浩特市| 神农架林区| 元江|