c++中struct和class的區(qū)別小結(jié)
前言
在C++中,class和struct都是用于定義自定義數(shù)據(jù)類(lèi)型的關(guān)鍵字,但它們之間有一些區(qū)別。這些區(qū)別主要涉及成員的默認(rèn)訪問(wèn)權(quán)限和繼承。
正題
成員的默認(rèn)訪問(wèn)權(quán)限:
- 在class中,默認(rèn)情況下,成員的訪問(wèn)權(quán)限是private,這意味著除了類(lèi)的內(nèi)部,其他地方無(wú)法直接訪問(wèn)類(lèi)的私有成員。
- 在struct中,默認(rèn)情況下,成員的訪問(wèn)權(quán)限是public,這意味著類(lèi)的外部也可以直接訪問(wèn)結(jié)構(gòu)體的成員。
繼承:
- 當(dāng)使用class定義類(lèi)時(shí),默認(rèn)的繼承訪問(wèn)權(quán)限是private,這意味著基類(lèi)的成員對(duì)派生類(lèi)是private的,除非通過(guò)繼承控制符進(jìn)行了顯式修改。
- 當(dāng)使用struct定義類(lèi)時(shí),默認(rèn)的繼承訪問(wèn)權(quán)限是public,這意味著基類(lèi)的成員對(duì)派生類(lèi)是public的,除非通過(guò)繼承控制符進(jìn)行了顯式修改。
以下是一個(gè)示例,演示了class和struct之間的區(qū)別:
#include <iostream> class ClassExample { ? ? int privateMember; public: ? ? int publicMember; ? ? ClassExample() : privateMember(0), publicMember(0) {} ? ? void ShowPrivate() { ? ? ? ? std::cout << "Private: " << privateMember << std::endl; ? ? } }; struct StructExample { ? ? int privateMember; public: ? ? int publicMember; ? ? StructExample() : privateMember(0), publicMember(0) {} ? ? void ShowPrivate() { ? ? ? ? std::cout << "Private: " << privateMember << std::endl; ? ? } }; int main() { ? ? ClassExample classObj; ? ? StructExample structObj; ? ? classObj.publicMember = 42; ? ? structObj.publicMember = 42; ? ? classObj.privateMember; ? // 無(wú)法訪問(wèn),因?yàn)?privateMember 是 private 的 ? ? structObj.privateMember; ?// 可以訪問(wèn),因?yàn)?privateMember 是 public 的 ? ? return 0; }
總之,class和struct的主要區(qū)別在于默認(rèn)的成員訪問(wèn)權(quán)限和繼承訪問(wèn)權(quán)限。然而,這兩者在其他方面都可以用來(lái)定義類(lèi),包括成員變量、成員函數(shù)、構(gòu)造函數(shù)等。選擇使用哪個(gè)關(guān)鍵字取決于你希望如何組織和訪問(wèn)類(lèi)的成員。
到此這篇關(guān)于c++中struct和class的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)c++ struct class內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C/C++中的struct結(jié)構(gòu)體詳細(xì)解讀
- C++ Struct結(jié)構(gòu)體用法淺析
- C++中的struct和class的區(qū)別詳解
- C++詳細(xì)講解函數(shù)調(diào)用與Struct和CLass的區(qū)別
- 一起來(lái)了解一下C++的結(jié)構(gòu)體?struct
- C++基礎(chǔ) class、struct、union詳細(xì)
- c/c++中struct定義、聲明、對(duì)齊方式解析
- C++結(jié)構(gòu)體struct和類(lèi)class區(qū)別詳解
- C++ struct 初始化與賦值的實(shí)現(xiàn)
相關(guān)文章
學(xué)習(xí)二維動(dòng)態(tài)數(shù)組指針做矩陣運(yùn)算的方法
這片文章介紹了如何利用二維動(dòng)態(tài)數(shù)組指針做矩陣運(yùn)算,需要的朋友可以參考下2015-07-07C/C++實(shí)現(xiàn)獲取硬盤(pán)序列號(hào)的示例代碼
獲取硬盤(pán)的序列號(hào)、型號(hào)和固件版本號(hào),此類(lèi)功能通常用于做硬盤(pán)綁定或硬件驗(yàn)證操作,下面我們就來(lái)學(xué)習(xí)一下如何使用C/C++實(shí)現(xiàn)獲取硬盤(pán)序列號(hào)吧2023-11-11C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[十]
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[十]...2007-02-02C++基于對(duì)話(huà)框的程序的框架實(shí)例
這篇文章主要介紹了C++基于對(duì)話(huà)框的程序的框架,以實(shí)例形式講述了C++對(duì)話(huà)框程序框架,有助于深入理解基于C++的Windows程序設(shè)計(jì),需要的朋友可以參考下2014-10-10基于opencv實(shí)現(xiàn)視頻中的顏色識(shí)別功能
這篇文章主要介紹了基于opencv實(shí)現(xiàn)視頻中的顏色識(shí)別功能,文章詳細(xì)介紹了顏色識(shí)別的原理及opencv中的顏色模型,基于c++代碼實(shí)現(xiàn)顏色識(shí)別功能,需要的朋友可以參考下2022-07-07C語(yǔ)言指針的長(zhǎng)度和類(lèi)型深入分析
這篇文章主要介紹了C語(yǔ)言指針的長(zhǎng)度和類(lèi)型,針對(duì)常見(jiàn)的各個(gè)類(lèi)型進(jìn)行了相對(duì)詳細(xì)的分析,需要的朋友可以參考下2014-09-09