欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ class和struct到底有什么區(qū)別詳解

 更新時間:2021年03月04日 14:34:19   投稿:zx  
這篇文章主要介紹了C++ class和struct到底有什么區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

C++ 中保留了C語言的 struct 關(guān)鍵字,并且加以擴(kuò)充。在C語言中,struct 只能包含成員變量,不能包含成員函數(shù)。而在C++中,struct 類似于 class,既可以包含成員變量,又可以包含成員函數(shù)。

C++中的 struct 和 class 基本是通用的,唯有幾個細(xì)節(jié)不同:

  • 使用 class 時,類中的成員默認(rèn)都是 private 屬性的;而使用 struct 時,結(jié)構(gòu)體中的成員默認(rèn)都是 public 屬性的。
  • class 繼承默認(rèn)是 private 繼承,而 struct 繼承默認(rèn)是 public 繼承。
  • class 可以使用模板,而 struct 不能。

C++ 沒有拋棄C語言中的 struct 關(guān)鍵字,其意義就在于給C語言程序開發(fā)人員有一個歸屬感,并且能讓C++編譯器兼容以前用C語言開發(fā)出來的項目。

在編寫C++代碼時,我強(qiáng)烈建議使用 class 來定義類,而使用 struct 來定義結(jié)構(gòu)體,這樣做語義更加明確。

使用 struct 來定義類的一個反面教材:

#include <iostream>
using namespace std;
struct Student{
  Student(char *name, int age, float score);
  void show();
  char *m_name;
  int m_age;
  float m_score;
};
Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ }
void Student::show(){
  cout<<m_name<<"的年齡是"<<m_age<<",成績是"<<m_score<<endl;
}
int main(){
  Student stu("小明", 15, 92.5f);
  stu.show();
  Student *pstu = new Student("李華", 16, 96);
  pstu -> show();
  return 0;
}

運行結(jié)果:
小明的年齡是15,成績是92.5
李華的年齡是16,成績是96

這段代碼可以通過編譯,說明 struct 默認(rèn)的成員都是 public 屬性的,否則不能通過對象訪問成員函數(shù)。如果將 struct 關(guān)鍵字替換為 class,那么就會編譯報錯。

到此這篇關(guān)于C++ class和struct到底有什么區(qū)別詳解的文章就介紹到這了,更多相關(guān)C++ class struct內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 常用的C++標(biāo)準(zhǔn)庫頭文件小結(jié)

    常用的C++標(biāo)準(zhǔn)庫頭文件小結(jié)

    C++標(biāo)準(zhǔn)庫定義了一系列函數(shù)、宏和對象,以實現(xiàn)跨團(tuán)隊、跨平臺的高效且具有卓越性能的標(biāo)準(zhǔn)化 C++ 代碼, 本文介紹常用的C++標(biāo)準(zhǔn)庫頭文件,需要的朋友可以參考下
    2023-11-11
  • C++中spdlog的簡單使用示例

    C++中spdlog的簡單使用示例

    spdlog是一個開源、跨平臺、無依賴、只有頭文件的C++11日志庫,所以這篇文章主要來和大家介紹一下一個簡單的spdlog使用示例,感興趣的小伙伴可以了解一下
    2023-08-08
  • C語言源碼實現(xiàn)俄羅斯方塊

    C語言源碼實現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了C語言源碼實現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 深入理解C++內(nèi)鏈接與外鏈接的意義

    深入理解C++內(nèi)鏈接與外鏈接的意義

    鏈接描述了名稱在整個程序或一個翻譯單元中如何引用或不引用同一實體,下面這篇文章主要給大家介紹了關(guān)于C++內(nèi)鏈接與外鏈接意義的理解,需要的朋友可以參考下
    2021-11-11
  • 深入了解c語言的循環(huán)語句

    深入了解c語言的循環(huán)語句

    這篇文章主要為大家介紹了c語言的循環(huán)語句,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用鏈表

    C語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用鏈表

    這篇文章主要為大家詳細(xì)介紹了c語言實現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語言實現(xiàn)導(dǎo)航功能

    C語言實現(xiàn)導(dǎo)航功能

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)導(dǎo)航功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言正則表達(dá)式詳解 regcomp() regexec() regfree()用法詳解

    C語言正則表達(dá)式詳解 regcomp() regexec() regfree()用法詳解

    C語言處理正則表達(dá)式常用的函數(shù)有regcomp()、regexec()、regfree()和regerror(),這里就為大家介紹一下,需要的朋友可以參考一下啊
    2018-04-04
  • c語言全局變量和局部變量問題及解決匯總

    c語言全局變量和局部變量問題及解決匯總

    局部變量能否和全局變量重名,如何引用一個已經(jīng)定義過的全局變量,全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?,接下來為您一一介紹
    2013-01-01
  • 使用pybind11封裝C++結(jié)構(gòu)體作為參數(shù)的函數(shù)實現(xiàn)步驟

    使用pybind11封裝C++結(jié)構(gòu)體作為參數(shù)的函數(shù)實現(xiàn)步驟

    這篇文章主要介紹了用pybind11封裝C++結(jié)構(gòu)體作為參數(shù)的函數(shù)實現(xiàn)步驟,本文分步驟通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02

最新評論