c++中struct和class的區(qū)別小結(jié)
前言
在C++中,class和struct都是用于定義自定義數(shù)據(jù)類型的關(guān)鍵字,但它們之間有一些區(qū)別。這些區(qū)別主要涉及成員的默認(rèn)訪問權(quán)限和繼承。
正題
成員的默認(rèn)訪問權(quán)限:
- 在class中,默認(rèn)情況下,成員的訪問權(quán)限是private,這意味著除了類的內(nèi)部,其他地方無法直接訪問類的私有成員。
- 在struct中,默認(rèn)情況下,成員的訪問權(quán)限是public,這意味著類的外部也可以直接訪問結(jié)構(gòu)體的成員。
繼承:
- 當(dāng)使用class定義類時,默認(rèn)的繼承訪問權(quán)限是private,這意味著基類的成員對派生類是private的,除非通過繼承控制符進(jìn)行了顯式修改。
- 當(dāng)使用struct定義類時,默認(rèn)的繼承訪問權(quán)限是public,這意味著基類的成員對派生類是public的,除非通過繼承控制符進(jìn)行了顯式修改。
以下是一個示例,演示了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; ? // 無法訪問,因為 privateMember 是 private 的 ? ? structObj.privateMember; ?// 可以訪問,因為 privateMember 是 public 的 ? ? return 0; }
總之,class和struct的主要區(qū)別在于默認(rèn)的成員訪問權(quán)限和繼承訪問權(quán)限。然而,這兩者在其他方面都可以用來定義類,包括成員變量、成員函數(shù)、構(gòu)造函數(shù)等。選擇使用哪個關(guān)鍵字取決于你希望如何組織和訪問類的成員。
到此這篇關(guān)于c++中struct和class的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)c++ struct class內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
學(xué)習(xí)二維動態(tài)數(shù)組指針做矩陣運算的方法
這片文章介紹了如何利用二維動態(tài)數(shù)組指針做矩陣運算,需要的朋友可以參考下2015-07-07