C++ (類的設計,對象的創建,this指針,構造函數)

類的設計

C++對結構體是有增強的

可以包含函數作為結構體成員

可以直接定義變量

在結構體成員函數里面可以直接訪問結構體成員變量

struct student{string name;int age;float score;void play_game(const string &name);}void student::play_game(const string game){}int main(){}

在C++,如果一個類的成員被聲明為私有,那么它只能被該類內部的成員函數,友元函數或友元類訪問,如果成員不加修飾符則默認為私有

class 類名稱{public:private:protected:}

成員函數:在類中說明函數原型,并在函數名前使用類名::加以限定

也可以直接在類中給出函數體,形成內聯函數

允許聲明重載函數和帶默認參數的函數

protect(保護成員):只能被該類的成員函數和其派生類的成員函數訪問

struct和class的區別:

主要體現在默認訪問權限上,struct的成員默認為public,class成員默認為private

對象的創建

對象本質上是一塊內存,這塊內存中存放的是創建這個對象的類描述的數據

在函數內部,用類創建一個對象,這個對象就是棧上創建的對象

int main(){Student stu;return 0;    }

在函數調用結束時棧上分配的內存會自動釋放,這個對象也就銷毀了

使用new'運算符可以在堆區開辟空間

在堆區開辟的空間,只需要把起始地址傳過來就可以

Student * pstu = new Student; //因為Student 的類型是Student ,所以 pstu的類型為 Student*.....delete pstu;

this指針

this是一個特殊的指針,指向類對象自身的首地址

每個類對象的非靜態成員函數都有一個this指針,指向調用成員函數對象的首地址

如果在成員函數中需要引用整個對象則用*this? 解引用

當成員函數的參數與成員變量同名時,可使用this區分

構造函數

作用 :給對象進行初始化

特征:名稱與類的名稱相同,且沒有返回值

class Student(){string name;float score;char gender;Student(string name,float score,char gender){this->name = name;//this是一個指針this->score = score;this->gender = gender;}}int main(){Student stu("小紅",88,'M');    }

如果沒寫構造函數,系統會默認提供一個無參的構造函數

函數名相同,參數不同,叫做函數的重載


class Student(){string name;float score;char gender;Student(string name,float score,char gender){this->name = name;//this是一個指針this->score = score;this->gender = gender;}Student(){}}int main(){Student stu;//調用的是無參的構造函數Student stu(name,score,gender);//調用的是有參的構造函數}

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

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

相關文章

《ADVANCING MATHEMATICAL REASONING IN LAN- GUAGE MODELS》全文閱讀

《ADVANCING MATHEMATICAL REASONING IN LAN- GUAGE MODELS: THE IMPACT OF PROBLEM-SOLVING DATA, DATA SYNTHESIS METHODS, AND TRAINING STAGES》全文閱讀 提升語言模型中的數學推理能力:問題求解數據、數據合成方法及訓練階段的影響 \begin{abstract} 數學推…

網絡測試工具:涵蓋網絡測速、密碼查看、故障判斷與網絡監測

在網絡管理與維護的廣闊領域中,網絡測試工具扮演著至關重要的角色。它們不僅簡化了復雜的網絡診斷流程,還提升了工作效率。今天推薦一款包含功能全面的網絡測試工具:InetTest,是一款免費且開源的網絡測試工具,適用于Wi…

小剛說C語言刷題——1005 - 已知一個圓的半徑,求解該圓的面積和周長

1.題目描述 已知一個圓的半徑,求解該圓的面積和周長。 輸入 輸入只有一行,只有 1個整數。 輸出 輸出只有兩行,一行面積,一行周長。(保留兩位小數)。 令 pi3.1415926。 樣例 輸入 1 輸出 3.14 6.…

【算法】快速排序

算法系列六:快速排序 一、快速排序的遞歸探尋 1.思路 2.書寫 3.搭建 3.1設計過掉不符情況(在最底層時) 3.2查驗能實現基礎結果(在最底層往上點時) 3.3跳轉結果繼續往上回搭 4.實質 二、快速排序里的基準排序 …

SoapUI 4.6.4(32位)下載安裝教程 - 兼容老舊Windows系統

SoapUI 4.6.4(32位版) 是個老版本的測試工具,專門給 32位 Windows 電腦 用的。現在最新版都是 64 位的了,但如果你還在用老系統,可能還得找這個舊版。 SoapUI 4.6.4工具下載:https://pan.quark.cn/s/c07381db8102 這…

【AI量化第24篇】KhQuant 策略框架深度解析:讓策略開發回歸本質——基于miniQMT的量化交易回測系統開發實記

我是Mr.看海,我在嘗試用信號處理的知識積累和思考方式做量化交易,應用深度學習和AI實現股票自動交易,目的是實現財務自由~ 目前我正在開發基于miniQMT的量化交易系統——看海量化交易系統。 本篇要講到量化的核心了——策略。說白了每個投資者…

Java面試黃金寶典48

1. C++ 的拷貝構造函數,深拷貝和淺拷貝 定義 拷貝構造函數:在 C++ 里,拷貝構造函數屬于特殊的構造函數,其功能是使用一個已存在的對象來初始化一個新對象。當對象以值傳遞的方式作為參數傳給函數、函數返回對象、用一個對象初始化另一個對象時,拷貝構造函數會被調用。淺拷…

OpenCV學習之獲取圖像所有點的坐標位置(二)

1.功能介紹 (1)使用openCV解析了.jpeg、.jpg、.png格式的圖像文件,輸出了圖像的寬、高、通道數; (2)創建txt格式文件,保存圖像中各像素點的rgba值。 2.環境介紹 操作系統:window10 開發語言:visual studio 2015 c++ 3.功能實現過程 3.1環境設置 (1)打開Vs2015…

B2B2C多用戶商城平臺 的兩種創新玩法

以前隨便搞個淘寶京東那樣的商城就能躺著賺錢的日子早過去了!現在市面上各種電商玩法花樣百出:小紅書那種刷著刷著就下單的"種草"電商,拼多多那種"幫我砍一刀"的社交電商,還有抖音快手那種看著視頻突然就想買…

【Bluedroid】A2DP Sink播放流程源碼分析(二)

接上一篇繼續分析:【Bluedroid】A2DP Sink播放流程源碼分析(一)_安卓a2dp sink播放流程-CSDN博客 AVDTP接收端(Sink)流事件處理 bta_av_sink_data_cback 是 Bluedroid 中 A2DP Sink 角色的 AVDTP 數據回調函數,負責處理接收端的…

抗量子算法驗證工具

抗量子算法計算工具 抗量子算法驗證工具ML-KEMML-DSASLH-DSA 抗量子算法驗證工具 2024年末,美國NIST陸續公布了FIPS-203、FIPS-204、FIPS-205算法標準文檔,抽空學習了一下,做了個算法計算工具。 ML-KEM ML-DSA SLH-DSA 需要的朋友可留言交流…

2025年PMP考試有哪些變化?難點在哪里?

PMP(項目管理專業人士資格認證)考試因其廣泛的行業認可度和實用性,成為許多專業人士提升職業競爭力的重要選擇。然而,對于初次接觸PMP考試的考生來說,其廣度與深度的平衡、理論與實踐的結合,以及跨文化思維…

Docker學習筆記-docker安裝、刪除

一、在centOS 7中docker的默認安裝目錄 # Docker 主配置文件目錄 ls /etc/docker# Docker 數據目錄(鏡像、容器、卷等) ls /var/lib/docker# Docker 可執行文件路徑 which docker # 輸出類似 /usr/bin/docker 二、docker文件目錄說明 目錄/文件用途/…

MATLAB求和∑怎么用?

MATLAB求和∑怎么用? 一:題目:求下列方程的和 二、代碼如下 1.syms函數 (方法一) 代碼如下(示例): 1. syms x 2. symsum((x.^22*x).^3,1,100) 3. 2.直接用循環 (方法二) 代碼如下&am…

每日算法-鏈表(2.兩數相加、24.兩兩交換鏈表中的節點、143.重排鏈表)

一.兩數相加 1.1題目描述 1.2題解思路 定義兩個指針l1,l2依次遍歷兩個鏈表,用變量add存儲l1加l2的值,將add的個位數取出來充當新節點的值,然后將add的個位數刪去,即add /10,循環此操作。 重點分析: 1.跟…

Flutter學習 滾動組件(1):ListView基本使用

目錄 一、ListView構造方法1.1 常規方法1.2 ListView.builder1.3 ListView.separated 二、自定義ListView樣式和布局:三、ListView性能優化:總結: 一、ListView構造方法 主要以下幾種方法: 常規方法,直接使用默認的構…

ESLint常見錯誤

1、Strings must use singlequote —— 字符串必須使用單引號 2、Extra semicolon semi——額外的分號:一行語句結尾不能添加分號 3、Unexpected trailing comma —— 行尾多了一個逗號 4、Newline required at end of file but not found ——文件結尾必須要新加…

Windows進行磁盤分區/擴容

Windows進行磁盤分區/擴容 導航 文章目錄 Windows進行磁盤分區/擴容導航分區教程壓縮卷教程 用Windows自帶的磁盤管理進行分區/擴容,但有個東西需要說明下是: 物理特性限制 磁盤分區的物理特性決定了擴容操作的方向。在磁盤上,數據是線性存儲…

獲取類路徑

分析 String pathThread.currentThread().getContextClassLoader().getResource("log").getPath(); 這行代碼用于獲取類路徑(classpath)下名為"log"的資源的文件系統路徑,我來詳細解析它的執行過程和潛在問題: 1. 代碼分解解析 j…

安裝fvm可以讓電腦同時管理多個版本的flutter、flutter常用命令、vscode連接模擬器

打開 PowerShellfvm安裝 dart pub global activate fvm安裝完成后,如果顯示FVM無法識別,那么需要去添加環境變量path添加這個:C:\Users\Administrator\AppData\Local\Pub\Cache\bin 常用命令 fvm releases 查看用戶可以裝的flutter版本fvm l…