C++ 學習筆記(四)—— 類和對象

1、this指針
class Date
{
public:void Init(Date* this, int year, int month, int day){this->_year = year;this->_month = month;this->_day = day;this->Print();// ?這就是this指針,是編譯器自己加的,是用來讓成員函數找到成員變量的位置的;// ?this在實參和形參位置不能顯示寫,但在類里面可以顯示的用;cout << this << endl;}void Print(){cout << _year << endl;}private:int _year;int _month;int _day;
};

小擴展:

1)this指針存在哪?(棧、堆、靜態區、常亮區)

答:this是一個形參,一般是存在棧里面;有些編譯器(如VS)會優化,直接用寄存器加載;

2、類的6個默認成員函數

如果一個類中什么成員都沒有,簡稱為空類;

空類中真的什么都沒有嗎?其實并不是,任何類在什么都不寫時,編譯器也會自動生成6個默認成員函數;

默認成員函數的定義也就是用戶沒有顯式實現,編譯器會自動生成的成員函數;

六個默認成員函數:

  1. 初始化和清理:構造函數主要完成初始化的工作;析構函數主要完成清理工作;
  2. 拷貝復制:拷貝構造是使用同類對象初始化創建對象;賦值重載主要是把一個對象賦值給另一個對象;
  3. 取地址重載:主要是普通對象和const對象取地址,這兩個很少會自己實現;

構造函數:

構造函數是特殊的成員函數,需要注意的是,構造函數雖然名稱叫構造,但是構造函數的主要任務并不是開空間創建對象,而是初始化對象。

特征:1)函數名與類名相同;2)無返回值(void也不需要寫);3)對象實例化時編譯器自動調用對應的構造函數;4)構造函數可以重載(寫多個構造函數,提供多個初始化方式);

class Date
{
public:Date(){_year = 1;_month = 1;_day = 1;}Date(int year, int month, int day){_year = year;_month = month;_day = day;}// ?將上述兩個構造函數合并為一個全缺省構造函數,更為靈活;Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void Print(){cout << _year << "/" << _month << "/" << _day << endl;}private:int _year;int _month;int _day;
}int main()
{Date dd; ?// ?此處注意不能寫成“Date dd()”,會識別成一個函數聲明的;dd.Print(); ?// ?咱們這里會發現dd已經被初始化為“1/1/1”了,如果沒有構造函數,這里出來的會是隨機值;Date dd2(2023, 01, 01);dd2.Print(); ?// ?此處輸出“2023/01/01”;return 0;
}

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

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

相關文章

SpringMVC全局異常處理機制

異常處理機制 異常處理的兩種方式&#xff1a; 編程式異常處理&#xff1a;是指在代碼中顯式地編寫處理異常的邏輯。它通常涉及到對異常類型的檢測及其處理&#xff0c;例如使用 try-catch 塊來捕獲異常&#xff0c;然后在 catch 塊中編寫特定的處理代碼&#xff0c;或者在 f…

深入LangChain:LLM交互機制與RAG集成的技術

本文將聚焦于 LangChain 如何集成檢索增強生成&#xff08;RAG&#xff09;&#xff0c;了解其架構、主要組件&#xff0c;以及與 LLM 的交互 LangChain 架構概覽 1、基礎層 這是與各類 LLM 對接的 “橋梁”。LangChain 支持多種流行的 LLM&#xff0c;如 OpenAI 的系列模型、H…

本地部署 LangManus

本地部署 LangManus 0. 引言1. 部署 LangManus2. 部署 LangManus Web UI 0. 引言 LangManus 是一個社區驅動的 AI 自動化框架&#xff0c;它建立在開源社區的卓越工作基礎之上。我們的目標是將語言模型與專業工具&#xff08;如網絡搜索、爬蟲和 Python 代碼執行&#xff09;相…

SQL注入(SQL Injection)攻擊原理與防御措施

SQL是一種代碼注入技術&#xff0c;可使攻擊者修改應用程序向數據庫提供的查詢。 迄今為止&#xff0c;最常見和最嚴重的應用 程序安全威脅總是隱藏在與數據庫有某些連接的網絡應用 程序中。 通過這種 SQL 注入&#xff0c;攻擊者可以繞過登錄程序&#xff0c;獲取、更改甚至更…

【算法】十大排序算法(含時間復雜度、核心思想)

以下是 **十大經典排序算法** 的時間復雜度、空間復雜度及穩定性總結&#xff0c;適用于面試快速回顧&#xff1a;排序算法對比表 排序算法最佳時間復雜度平均時間復雜度最差時間復雜度空間復雜度穩定性核心思想冒泡排序O(n)O(n)O(n)O(1)穩定相鄰元素交換&#xff0c;大數沉底…

LVS的 NAT 模式實現 3 臺RS的輪詢訪問

使用LVS的 NAT 模式實現 3 臺RS的輪詢訪問 1.配置 RS&#xff08;NAT模式&#xff09;2. 配置 LVS 主機&#xff08;僅主機、NAT模式&#xff09;2.1 配置僅主機網卡&#xff08;192.168.66.150/24 VIP &#xff09;2.2 配置 NAT 網卡&#xff08;192.168.88.6/24 DIP&#xff…

一、MySQL8的my.ini文件

MySQL8.0.11的安裝版本my.ini配置文件默認存放在&#xff1a;C:/Program Files/MySQL/MySQL Server 8.0/ 目錄下&#xff1b;而MySQL8.0.11綠色免安裝版本是沒有my.ini配置文件&#xff0c;用戶可以自行構建后&#xff0c;再通過my.ini進行數據庫的相關配置 一、MySQL8.0.11默…

微調這件小事:訓練集中的輸入數據該作為instruction還是input?從LLaMA-Factory的源碼中尋找答案吧~

在之前的博文中,我們已經了解了LLaMA-Factory框架執行各類任務的流程。今天,我們將深入探討SFT微調過程中關于數據集的兩個關鍵問題: 數據集中的instruction和input是如何結合起來生成大模型可以理解的輸入的?instruction是不是就是system prompt呢?(之所以會問這個問題,…

nacos-actuator漏洞

1、nacos配置文件添加以下配置 vim application.properties# 添加以下配置項 management.endpoints.enabled-by-defaultfalse management.server.port-12、重啟Nacos systemctl restart nacos3、驗證 打開地址http://ip:port/nacos/actuator查看是否有敏感信息輸出&#xff0…

extern關鍵字的用法

目錄 總述 一、聲明外部變量 二、聲明外部函數 三、實現模塊化編程 四、與"C" 連用&#xff0c;實現C和C的混合編程 五、注意事項 六、疑點補充&#xff08;你可能會有和我一樣的疑問&#xff1f;&#xff09; 總述 在C和C中&#xff0c;extern關鍵字用于聲明外…

Jboss漏洞再現

一、CVE-2015-7501 1、開環境 2、訪問地址 / invoker/JMXInvokerServlet 出現了讓下載的頁面&#xff0c;說明有漏洞 3、下載ysoserial工具進行漏洞利用 4、在cmd運行 看到可以成功運行&#xff0c;接下來去base64編碼我們反彈shell的命令 5、執行命令 java -jar ysoserial-…

Android平臺毫秒級低延遲HTTP-FLV直播播放器技術探究與實現

一、前言 在移動互聯網蓬勃發展的今天&#xff0c;視頻播放功能已成為眾多Android應用的核心特性之一。面對多樣化的視頻格式和傳輸協議&#xff0c;開發一款高效、穩定的視頻播放器是許多開發者追求的目標。FLV&#xff08;Flash Video&#xff09;格式&#xff0c;盡管隨著H…

BUAA XCPC 2025 Spring Training 2

C \color{green}{\texttt{C}} C [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 給定一棵以 1 1 1 為根的樹&#xff0c;記 a i a_{i} ai? 表示節點 i i i 的權值&#xff0c; lca( i , j ) \text{lca(}i,j) lca(i,j) 表示節…

MySQL 中,分庫分表機制和分表分庫策略

在 MySQL 中,分庫分表是一種常見的數據庫水平擴展方案,用于解決單庫單表數據量過大導致的性能瓶頸問題。通過將數據分散到多個數據庫或表中,可以提高系統的并發處理能力、降低單點故障風險,并提升查詢性能。 一、分庫分表的作用 提升性能: 分散數據存儲和查詢壓力,避免單…

組件日志——etcd

目錄 一、簡介 二、安裝【Ubuntu】 安裝etcd 安裝CAPI 三、寫一個示例 3.0寫一個示例代碼 3.1獲取一個etcd服務 3.2獲取租約(寫端操作) 3.3使用租約(寫端操作) 3.4銷毀租約(寫端操作) 3.5獲取etcd服務中的服務列表(讀端操作) 3.6監聽狀態變化(讀端操作) 一、簡介 Et…

python網絡爬蟲開發實戰之網頁數據的解析提取

目錄 1 XPath的使用 1.1 XPath概覽 1.2 XPath常用規則 1.3 準備工作 1.4 實例引入 1.5 所有節點 1.6 節點 1.7 父節點 1.8 屬性匹配 1.9 文本獲取 1.10 屬性獲取 1.11 屬性多值匹配 1.12 多屬性匹配 1.13 按序選擇 1.14 節點軸選擇 2 Beautiful Soup 2.1 簡介…

理解操作系統(一)馮諾依曼結構和什么是操作系統

認識馮諾依曼系統 操作系統概念與定位 深?理解進程概念&#xff0c;了解PCB 學習進程狀態&#xff0c;學會創建進程&#xff0c;掌握僵?進程和孤?進程&#xff0c;及其形成原因和危害 1. 馮諾依曼體系結構 我們常?的計算機&#xff0c;如筆記本。我們不常?的計算機&am…

Tomcat常見漏洞攻略

一、CVE-2017-12615 漏洞原理&#xff1a;當在Tomcat的conf&#xff08;配置?錄下&#xff09;/web.xml配置?件中添加readonly設置為false時&#xff0c;將導致該漏洞產 生&#xff0c;&#xff08;需要允許put請求&#xff09; , 攻擊者可以利?PUT方法通過精心構造的數據包…

快速求出質數

要快速判斷一個數是否為質數&#xff0c;可以采用以下優化后的試除法&#xff0c;結合數學規律大幅減少計算量&#xff1a; 步驟說明 處理特殊情況&#xff1a; 若 ( n \leq 1 )&#xff0c;不是質數。若 ( n 2 ) 或 ( n 3 )&#xff0c;是質數。若 ( n ) 能被 2 或 3 整除&…

Linux上位機開發實戰(camera視頻讀取)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 關于linux camera&#xff0c;一般都是認為是mipi camera&#xff0c;或者是usb camera。當然不管是哪一種&#xff0c;底層的邏輯都是v4l2&#x…