C++ class和struct到底有什么區(qū)別詳解
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ā)出來的項(xiàng)目。
在編寫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;
}
運(yùn)行結(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)文章希望大家以后多多支持腳本之家!
- C++中的struct和class的區(qū)別詳解
- C++深入探索類和對象之封裝及class與struct的區(qū)別
- C++詳細(xì)講解函數(shù)調(diào)用與Struct和CLass的區(qū)別
- C++深入探索類真正的形態(tài)之struct與class
- C++基礎(chǔ) class、struct、union詳細(xì)
- C++結(jié)構(gòu)體struct和類class區(qū)別詳解
- C++中聲明類的class與聲明結(jié)構(gòu)體的struct關(guān)鍵字詳解
- C++中關(guān)鍵字Struct和Class的區(qū)別
- 深入C++中struct與class的區(qū)別分析
- c++中struct和class的區(qū)別小結(jié)
相關(guān)文章
詳解C++的靜態(tài)內(nèi)存分配與動態(tài)內(nèi)存分配
內(nèi)存分配 (Memory Allocation) 是指為計(jì)算機(jī)程序或服務(wù)分配物理內(nèi)存空間或虛擬內(nèi)存空間的一個過程,本文主要介紹了C++的靜態(tài)內(nèi)存分配與動態(tài)內(nèi)存分配,感興趣的同學(xué)可以參考閱讀2023-06-06
C語言實(shí)現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
深入解析設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用
這篇文章主要介紹了設(shè)計(jì)模式中的適配器模式在C++中的運(yùn)用,通常適配器模式可以細(xì)分為類適配器和對象適配器兩種情況,需要的朋友可以參考下2016-03-03
C++實(shí)現(xiàn)順序表的常用操作(插入刪出查找輸出)
實(shí)現(xiàn)順序表的插入,刪除,查找,輸出操作在C語言中經(jīng)常用到。下面小編給大家整理實(shí)現(xiàn)代碼,一起看下吧2016-08-08
C++ 使用CRC32檢測內(nèi)存映像完整性的實(shí)現(xiàn)步驟
當(dāng)我們使用動態(tài)補(bǔ)丁的時候,那么內(nèi)存中同樣不存在校驗(yàn)效果,也就無法抵御對方動態(tài)修改機(jī)器碼了,為了防止解密者直接對內(nèi)存打補(bǔ)丁,我們需要在硬盤校驗(yàn)的基礎(chǔ)上,增加內(nèi)存校驗(yàn),防止動態(tài)補(bǔ)丁的運(yùn)用。2021-06-06
Qt實(shí)現(xiàn)可以計(jì)算大數(shù)的簡單計(jì)算器
計(jì)算器是我們生活中很常見的東西,它可以由多種語言多種方式來實(shí)現(xiàn)。本文主要介紹的是基于C++語言,由QT實(shí)現(xiàn)的可以計(jì)算大數(shù)的簡單計(jì)算器,需要的可以參考一下2022-12-12
淺談int8_t int64_t size_t ssize_t的相關(guān)問題(詳解)
下面小編就為大家?guī)硪黄獪\談int8_t int64_t size_t ssize_t的相關(guān)問題(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03

