類與對象詳解 C++ (1)

1.struct和class

與C語言不同的是,C++中struct和class可以定義成員變量和成員函數。更偏好用class。

2.類的定義

格式如下:

? ? ? ? class 定義類的 關鍵字, ClassName 為類的名字, {} 中為類的主體,注意 類定義結束時后面 號不能省略
class className
{
// 類體:由成員函數和成員變量組成
}; ?// 一定要注意后面的分號

3.類的訪問限定符

public、protected、private

【訪問限定符說明】
1. public 修飾的成員在類外可以直接被訪問
2. protected private 修飾的成員在類外不能直接被訪問 ( 此處 protected private 是類似的 )
3. 訪問權限 作用域從該訪問限定符出現的位置開始直到下一個訪問限定符出現時為止
4. 如果后面沒有訪問限定符,作用域就到 } 即類結束。
5. class 的默認訪問權限為 private struct public( 因為 struct 要兼容 C)
問題: C++ struct class 的區別是什么?
解答: C++ 需要兼容 C 語言,所以 C++ struct 可以當成結構體使用。另外 C++ struct 還可以用來
定義類。和 class 定義類是一樣的,區別是 struct 定義的類默認訪問權限是 public class 定義的類
默認訪問權限是 private 。注意:在繼承和模板參數列表位置, struct class 也有區別,后序給大
家介紹。
面向對象的三大特性:封裝、繼承、多態
封裝本質上是一種管理,隱藏對象的屬性和現實細節,僅對外公開接口來與對象進行交互。

4.類的作用域

類定義的新作用域簡稱類作用域。在類外定義成員時,需要使用::操作符指明對象所屬的類操作域。

class Person
{
public:void PrintPersonInfo();
private:char _name[20];char _gender[3];int ?_age;
};
// 這里需要指定PrintPersonInfo是屬于Person這個類域
void Person::PrintPersonInfo()
{cout << _name << " "<< _gender << " " << _age << endl;
}

5.類的實例化

注意:類本身并沒有分配實際的內存空間,實例化后才占用實際的物理空間。

一個類可以實例化多個對象。

6.類對象模型

一個類的大小,實際上只計算該類中成員變量。注意計算時運用內存對齊。

內存對齊規則:

1. 第一個成員在與結構體偏移量為 0 的地址處。
2. 其他成員變量要對齊到某個數字(對齊數)的整數倍的地址處。
注意:對齊數 = 編譯器默認的一個對齊數 與 該成員大小的較小值。
VS 中默認的對齊數為 8
3. 結構體總大小為:最大對齊數(所有變量類型最大者與默認對齊參數取最小)的整數倍。
4. 如果嵌套了結構體的情況,嵌套的結構體對齊到自己的最大對齊數的整數倍處,結構體的整
體大小就是所有最大對齊數(含嵌套結構體的對齊數)的整數倍。
為什么要內存對齊?為了提高效率。
編譯器一次性一般讀取4或8字節,從整數倍開始讀。如果不內存對齊,一個數據就要讀取兩次,效率較低。

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

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

相關文章

前端canvas項目實戰——簡歷制作網站(五):右側屬性欄(字體、字號、行間距)

目錄 前言一、效果展示二、實現步驟1. 優化代碼&#xff0c;提取常量2. 實現3個編輯模塊3. 實現updateFontProperty方法4. 一個常見的用法&#xff1a;僅更新當前選中文字的樣式 三、Show u the code后記 前言 上一篇博文中&#xff0c;我們擴充了線條對象&#xff08;fabric.…

springboot 整合oauth2

1、EnableOAuth2Client&#xff1a;客戶端&#xff0c;提供OAuth2RestTemplate&#xff0c;用于客戶端訪問資源服務。 簡要步驟&#xff1a;客戶端訪問資源->客戶端發現沒有資源訪問token->客戶端根據授權類型生成跳轉url->瀏覽器 302 到認證授權服務進行認證、授權。…

Dockerfile構建過程詳解

Dockerfile介紹 docker是用來構建docker鏡像的文件&#xff01;命令參數腳本&#xff01; 構建步驟&#xff1a; 1、編寫一個dockerfile文件 2、docker build構建成為一個鏡像 3、docker run 運行鏡像 …

PDF轉Excel的未來:人工智能技術如何提升轉換效率和準確性

隨著信息技術的快速發展&#xff0c;PDF和Excel作為兩種重要的文件格式&#xff0c;在日常生活和工作中扮演著至關重要的角色。PDF以其獨特的跨平臺閱讀特性&#xff0c;成為了文件分享和傳輸的首選格式&#xff1b;而Excel則以其強大的數據處理能力&#xff0c;成為了數據分析…

【二分查找】【C++算法】378. 有序矩陣中第 K 小的元素

作者推薦 視頻算法專題 本文涉及的基礎知識點 二分查找算法合集 LeetCode378. 有序矩陣中第 K 小的元素 給你一個 n x n 矩陣 matrix &#xff0c;其中每行和每列元素均按升序排序&#xff0c;找到矩陣中第 k 小的元素。 請注意&#xff0c;它是 排序后 的第 k 小元素&…

機器人持續學習基準LIBERO系列10——文件結構

0.前置 機器人持續學習基準LIBERO系列1——基本介紹與安裝測試機器人持續學習基準LIBERO系列2——路徑與基準基本信息機器人持續學習基準LIBERO系列3——相機畫面可視化及單步移動更新機器人持續學習基準LIBERO系列4——robosuite最基本demo機器人持續學習基準LIBERO系列5——…

力扣日記3.3-【回溯算法篇】332. 重新安排行程

力扣日記&#xff1a;【回溯算法篇】332. 重新安排行程 日期&#xff1a;2023.3.3 參考&#xff1a;代碼隨想錄、力扣 ps&#xff1a;因為是困難題&#xff0c;望而卻步了一星期。。。T^T 332. 重新安排行程 題目描述 難度&#xff1a;困難 給你一份航線列表 tickets &#xf…

牛客小白月賽86

A-水鹽平衡_牛客小白月賽86 (nowcoder.com) #include<bits/stdc.h> #define endl \n #define int long long using namespace std; int a,b,c,d; void solve() {cin>>a>>b>>c>>d;if((double)a/b>(double)c/d) cout<<S<<endl;els…

關于脈沖負載應用中電阻器,您需要了解的 11 件事?

不幸的是&#xff0c;電阻器在脈沖負載下可能會失效。當脈沖功率耗散到器件的電阻元件時&#xff0c;它會產生熱量并增加電阻器的溫度。過熱會損壞電阻元件&#xff0c;導致電阻變化甚至設備開路。為了避免在設計中出現這種情況&#xff0c;以下是您在選擇元件時應了解的有關電…

excel統計分析——拉丁方設計

參考資料&#xff1a;生物統計學 拉丁方設計也是隨機區組設計&#xff0c;是對隨機區組設計的一種改進。它在行的方向和列的方向都可以看成區組&#xff0c;因此能實現雙向誤差的控制。在一般的試驗設計中&#xff0c;拉丁方常被看作雙區組設計&#xff0c;用于提高發現處理效應…

Skipped breakpoint at because it happened inside debugger evaluation親測可用

問題描述&#xff1a; 在多線程項目中&#xff0c;在idea中打斷點時&#xff0c;有時會遇到下面這種情況&#xff1a; idea左下角出現一行紅底或者綠底文字提示&#xff1a; Skipped breakpoint at because it happened inside debugger evaluation 然后我們能感受到的就是…

HTML中自定義鼠標右鍵菜單

今天突然有人跟我提到了HTML中如何自定義鼠標右鍵菜單&#xff0c;這里大概記錄一下吧&#xff0c;方便下次直接復制。免得還去看API文檔。 文章目錄 HTML中自定義鼠標右鍵菜單結果如下所示可以稍微改一下鼠標懸浮到右鍵菜單時的樣式結果如下所示 只在某個特定的div才可以顯示…

javascript 的eval()和with是干嘛的

原來JavaScript 中的eval() 和 with 是兩個強大的功能&#xff0c;但同時它們也具有潛在風險的特性&#xff0c;所以謹慎使用。 首先說說eval() 函數&#xff1a; 它接收一個字符串參數&#xff0c;并將其作為 JavaScript 代碼來解析和執行。 這意味著你可以使用 eval() 動態地…

《Scratch等級認證CCF-GESP真題解析》專欄總目錄

?? 專欄名稱:《Scratch等級認證CCF-GESP真題解析》 ?? 專欄介紹:中國計算機學會GESP《CCF編程能力等級認證》Scratch圖形化編程(1~4級)歷屆真題解析。 ?? 訂閱專欄:訂閱后可閱讀專欄內所有真題解析,真題持續更新中,限時9.9元,歡迎訂閱! Scratch圖形化編程一級 序…

2368. 受限條件下可到達節點的數目

2368. 受限條件下可到達節點的數目 題目鏈接&#xff1a;2368. 受限條件下可到達節點的數目 代碼如下&#xff1a; //深度優先遍歷 //參考&#xff1a;https://leetcode.cn/problems/reachable-nodes-with-restrictions/solutions/2662538/shu-shang-dfspythonjavacgojsrust-…

C++自學精簡實踐教程

一、介紹 1.1 教程特點 一篇文章從入門到就業有圖有真相&#xff0c;有測試用例&#xff0c;有作業&#xff1b;提供框架代碼&#xff0c;作業只需要代碼填空規范開發習慣&#xff0c;培養設計能力 1.2 參考書 唯一參考書《C Primer 第5版》?參考書下載&#xff1a; 藍奏云…

Acwing---3777. 磚塊

磚塊 1.題目2.基本思想3.代碼實現 1.題目 n 個磚塊排成一排&#xff0c;從左到右編號依次為 1~n。 每個磚塊要么是黑色的&#xff0c;要么是白色的。 現在你可以進行以下操作若干次&#xff08;可以是 0 次&#xff09;&#xff1a; 選擇兩個相鄰的磚塊&#xff0c;反轉它…

STL——stack

目錄 stack stack都有哪些接口 模擬實現一個stack stack 1. stack是一種容器適配器&#xff0c;專門用在具有后進先出操作的上下文環境中&#xff0c;其刪除只能從容器的一端進行元素的插入與提取操作。 2. stack是作為容器適配器被實現的&#xff0c;容器適配器即…

數據分析-Pandas數據的畫圖設置

數據分析-Pandas數據的畫圖設置 數據分析和處理中&#xff0c;難免會遇到各種數據&#xff0c;那么數據呈現怎樣的規律呢&#xff1f;不管金融數據&#xff0c;風控數據&#xff0c;營銷數據等等&#xff0c;莫不如此。如何通過圖示展示數據的規律&#xff1f; 數據表&#x…

春招!啟動了

大家好&#xff0c;我是洋子。今年的春招很多企業已經開始招聘了&#xff0c;像美團今年繼續發力&#xff0c;24屆春招以及25屆暑期轉正實習一共招聘4000人。另外&#xff0c;阿里&#xff0c;京東&#xff0c;順豐等公司也已經開始春招&#xff0c;可以說招聘的號角已經正式吹…