【C++】C++中struct結構體和class類的區別

在C++中,?struct?和?class?在很多方面都非常相似,它們都可以包含數據成員(變量)和成員函數(方法)。然而,它們之間還是存在一些關鍵的區別:

1.?默認訪問權限
?struct?的成員默認是?public?的,這意味著它的成員可以被任何訪問這些成員的對象訪問。
?class?的成員默認是?private?的,這意味著只有類自己的成員函數和友元函數才能直接訪問這些成員。

2.?繼承訪問權限
當使用?struct?作為基類時,基類的?public?和?protected?成員在派生類中默認為?public?。
當使用?class?作為基類時,基類的?public?和?protected?成員在派生類中保持為?protected?。

3.?用途和語義
?struct?通常用于簡單的數據結構,它更傾向于表示數據的簡單集合,而不包含行為(函數)。
?class?通常用于創建具有封裝、繼承和多態特性的對象,它既包含數據也包含操作這些數據的函數。

4.?構造函數和析構函數
在C++11之前,?struct?和?class?在默認構造函數、拷貝構造函數、賦值操作符和析構函數的默認行為上有所不同。?struct?默認生成這些特殊成員函數,而?class?則不會。
從C++11開始,如果類或結構體沒有定義任何構造函數、拷貝控制成員(拷貝構造函數、移動構造函數、拷貝賦值操作符、移動賦值操作符)或析構函數,編譯器會為它們生成默認實現,無論它們是?class?還是?struct?。

5.?類型轉換
?struct?可以隱式轉換為?class?,但反過來則不行。

6.?歷史和傳統
在C++早期版本中,?struct?被用來定義純數據結構,而?class?被用來定義具有封裝和抽象的數據類型。隨著語言的發展,兩者之間的界限變得模糊。
在實際編程中,許多程序員傾向于使用?class?作為默認選擇,因為它提供了更好的封裝和更嚴格的訪問控制。然而,?struct?在某些情況下仍然很有用,特別是當你需要一個簡單的數據結構,而不需要類的全部特性時。
?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44364.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44364.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44364.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實現組件存儲 WinSxS 文件夾解析

目錄 背景 目錄名的組成 解析目錄結構 更新&總結 文章出處鏈接:[https://blog.csdn.net/qq_59075481/article/details/140385969]. 背景 WinSxS 文件夾位于 Windows 文件夾中,例如 C: \Windows\WinSxS。它是 Windows 組件存儲文件的位置。 Wind…

深入理解Spring Boot中的日志框架選擇

深入理解Spring Boot中的日志框架選擇 大家好,我是微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 1. 背景與需求 在開發和運維中,日志是不可或缺的重要組成部分。Spring Boot作為一個流行的Java開…

idea啟動vue項目一直卡死在51%,問題分析及其如何解決

如果你的項目也一直卡在百分之幾十&#xff0c;你可以參考下面的方法&#xff0c;試一試能否解決 問題描述&#xff1a; 通過在idea終端中輸入命令 npm run serve 啟動vue項目&#xff0c;啟動進程一直卡在51% 如何解決&#xff1a; 檢查 < template > 標簽中的html內容…

深度學習中的超參管理方法:argparse模塊

在深度學習方法中我們不可避免地會遇到大量超參數如&#xff08;batch_size、learning_rate等&#xff09;。不同的超參數組合可以得到不同的訓練/測試結果。所以在訓練和測試過程中我們需要不斷調整超參數獲得理想的結果&#xff08;煉丹&#xff09;&#xff0c;如果每一次去…

破解世紀難題:顛覆性方案解鎖世界十大未解之謎

前言 在科學的浩瀚宇宙中&#xff0c;始終存在一些引人入勝的謎題&#xff0c;它們挑戰著人類智慧的極限。這些謎題不僅涵蓋了數學、物理、天文學和生物學等領域&#xff0c;還觸及到意識和宇宙的本質。破解這些世紀難題&#xff0c;不僅意味著人類知識的巨大飛躍&#xff0c;…

【Windows】硬鏈接和軟鏈接(OneDrive同步指定目錄?)

文章目錄 一、場景帶入二、Windows下的硬鏈接和軟鏈接2.1 硬鏈接&#xff08;Hard Link&#xff09;2.2 軟鏈接&#xff08;符號鏈接&#xff0c;Symbolic Link&#xff09;2.3 軟鏈接和快捷方式2.4 應用場景 三、OneDrive中的應用3.1 錯誤姿勢3.2 好像可行的嘗試3.3 合理的解決…

智能貓砂盆兩種類型怎么選?深度剖析熱門前三的品牌!

應該也有很多鏟屎官像我一樣&#xff0c;第一個入手的通常都是封閉式的智能貓砂盆&#xff0c;自動清潔是很好用&#xff0c;但問題也隨之而來。有時候滾筒式的智能貓砂盆會在清潔過程中將砂團摔碎&#xff0c;導致糞便暴露出來產生臭味&#xff0c;這樣我們回來不得不又再次進…

LangChain —— Prompt Templates

文章目錄 一、什么是 Prompt Templates1、String PromptTemplates2、ChatPromptTemplates3、MessagesPlaceholder 留言占位符 二、如何使用 Prompt Templates 一、什么是 Prompt Templates 提示模板有助于將用戶輸入和參數轉換為語言模型的指令。這可用于指導模型的響應&#x…

LangChain框架詳解

LangChain框架詳解 LangChain是一個基于語言模型開發應用程序的強大框架&#xff0c;旨在幫助開發人員簡化與大模型交互、數據檢索以及將不同功能模塊串聯起來以完成復雜任務的過程。它提供了一套豐富的工具、組件和接口&#xff0c;使開發人員能夠輕松構建上下文感知和具備邏…

基于stm32+小程序開發智能家居門禁系統-硬件-軟件實現

視頻演示&#xff1a; 基于stm32智能家居門禁系統小程序開發項目 視頻還有添加刪除卡號&#xff0c;添加刪除指紋&#xff0c;關閉繼電器電源等沒有演示。 代碼Git&#xff1a; https://github.com/Abear6666/stm32lock 總體功能&#xff1a; 本門禁系統主要解鎖功能分別為卡…

沖積圖(alluvial plot)展示競爭性內源RNA(ceRNA)網絡

導讀&#xff1a; 用沖積圖展示ceRNA網絡可以更好地查看競爭和吸附關系&#xff0c;讓靜態的圖&#xff0c;“流動”起來。 沖積圖簡介 Alluvial plot&#xff08;沖積圖&#xff09;是一種流程圖&#xff0c;最初設計用于展示網絡結構隨時間的變化。這種圖表特別適用于展示…

sed的替換可用:斜杠/,豎或|,井號# 等符號, 但是查找只能用斜杠/ , sed的查找和替換可以一起用 筆記240711

sed的替換可用:斜杠/,豎或|,井號# 等符號, 但是… … 查找只能用斜杠/ 替換必須用s開頭, 如:s/ , s| , s# 例如: s/正則/替換內容/s/正則/替換內容/gs|正則|替換內容|s|正則|替換內容|gs#正則#替換內容#s#正則#替換內容#g 當內容包含斜杠/時, (例如路徑) , 使用 豎或|,井號…

06_TypeScript 中的函數

TypeScript 中的函數 一、函數的定義es5 定義函數的方法TypeScript 定義函數的方法ts 中定義方法傳參 二、可選參數三、默認參數&#xff08;跟可選參數一樣&#xff09;四、剩余參數&#xff08;三點運算符的應用&#xff09;五、函數重載六、箭頭函數 es6 一、函數的定義 es…

Windows圖形界面(GUI)-SDK-C/C++ - 編輯框(edit)

公開視頻 -> 鏈接點擊跳轉公開課程博客首頁 -> 鏈接點擊跳轉博客主頁 目錄 編輯框(edit) 控件樣式 創建控件 初始控件 消息處理 示例代碼 編輯框(edit) 控件樣式 編輯框&#xff08;Edit Control&#xff09;是Windows中最常用的控件之一&#xff0c;用于接收用戶…

python 知識點累積

.items() tinydict {Google: www.google.com, Runoob: www.runoob.com, taobao: www.taobao.com}print (tinydict.items())運行結果 dict_items([(Google, www.google.com), (Runoob, www.runoob.com), (taobao, www.taobao.com)]) 返回的 dict_items([...]) 是一個字典項的…

【持續集成_05課_Linux部署SonarQube及結合開發項目部署】

一、Linux下安裝SonarQube 1、安裝sonarQube 前置條件&#xff1a;sonarQube不能使用root賬號進行啟動&#xff0c;所以需要創建普通用戶及 其用戶組 1&#xff09;創建組 2&#xff09;添加用戶、組名、密碼 3&#xff09;CMD上傳qube文件-不能傳到home路徑下哦 4&#xff09…

王牌站士Ⅳ--矢量數據庫對 RAG 效率的影響

前言 近年來&#xff0c;檢索增強生成 (RAG) 模型越來越受歡迎。RAG 模型利用大型神經網絡以及外部知識源的檢索機制。這使得模型擁有的知識比其內部存儲的更多&#xff0c;從而使其能夠為廣泛的主題和領域生成高質量的輸出。 影響 RAG 模型性能的關鍵因素之一是從外部源檢索相…

C++之STL簡介

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、STL是什么二、STL的發展歷史三、STL的組成部分3.1 容器&#xff08;Containers&#xff09;3.2 迭代器&#xff08;Iterators&#xff09;3.3 算法&#xf…

【啟明智顯分享】ESP32-S3 4.3寸觸摸串口屏HMI應用方案:WIFI/藍牙無線通信助力烘干設備實現遠程遙控

技術不斷進步&#xff0c;人們對烘干設備的美觀度、功能多樣性提出更高要求&#xff0c;傳統的數碼管顯示、按鍵式控制已經無法滿足客戶的需求。用智能屏替代傳統的數碼管可以很好的解決這個問題&#xff0c;為用戶帶來更好的人機交互體驗。 基于此&#xff0c;啟明智顯提出將樂…

solidity實戰練習2--ERC20實現

//SPDX-License-Identifier:MTT pragma solidity ^0.8.24;interface erc20{function name()external view returns (string memory);//查看代幣的名稱function symbol() external view returns(string memory);//查看代幣簡稱function totalSupply()external view returns(uint…