中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

徐州萬網(wǎng)網(wǎng)站建設(shè)seo優(yōu)化上首頁

徐州萬網(wǎng)網(wǎng)站建設(shè),seo優(yōu)化上首頁,涪城網(wǎng)站建設(shè),個人怎么做動漫短視頻網(wǎng)站堅持看完,結(jié)尾有思維導(dǎo)圖總結(jié) 這里寫目錄標(biāo)題C語言和 C 的區(qū)別類的定義類的初認(rèn)識類的內(nèi)容訪問限定符類的作用域類的實例化類中的 this 指針總結(jié)C語言和 C 的區(qū)別 C 的祖師爺除了在 C語言的基礎(chǔ)上化簡了一些復(fù)雜操作 更為重要的是,兩個語言實現(xiàn)的過程是…

堅持看完,結(jié)尾有思維導(dǎo)圖總結(jié)

這里寫目錄標(biāo)題

  • C語言和 C++ 的區(qū)別
  • 類的定義
    • 類的初認(rèn)識
    • 類的內(nèi)容
    • 訪問限定符
    • 類的作用域
  • 類的實例化
  • 類中的 this 指針
  • 總結(jié)

C語言和 C++ 的區(qū)別

C++ 的祖師爺除了在 C語言的基礎(chǔ)上化簡了一些復(fù)雜操作
更為重要的是,兩個語言實現(xiàn)的過程是不一樣的
C 語言是一種面向過程的語言,而 C++ 是一種面向?qū)ο蟮恼Z言

如果是洗衣服
C 語言會這樣洗
那盆子,放水,放衣服,加洗衣粉,手搓,晾干
而 C++ 會先分析有哪些對象

會有 人 衣服 洗衣機 洗衣粉
通過這些對象的交互完成洗衣服
人只要做把衣服放進(jìn)洗衣機,加洗衣粉,打開洗衣機就可以
不需要關(guān)注衣服是怎么洗的

類的定義

類的初認(rèn)識

上面我們?nèi)绻怯?C 語言來寫,就要定義一個盆子,然后放水是一個函數(shù)
放衣服是一個函數(shù),加洗衣粉是一個函數(shù),手搓衣服是一個函數(shù),晾干是一個函數(shù)
然后一步步地走

但是 C++ 不同
他會把人 衣服 洗衣粉 洗衣機分別定義成一個個的類
人有哪些特性,功能,歸到人這個類里面
衣服有哪些特性功能,歸到衣服這個類中
洗衣機有哪些特性功能,歸到洗衣機這個類中

我們很自然地聯(lián)想到,一個自定義的類型,在 C語言中我們常使用結(jié)構(gòu)體定義
struct 但是 在 C 語言里面,結(jié)構(gòu)體內(nèi)部并不支持函數(shù)

然而在 C++ 中,我們可以在結(jié)構(gòu)體里頭寫函數(shù)了 ,這樣于 c語言結(jié)構(gòu)體類似但是不同的東西 我們把他叫做類
類的定義是這樣的

class Name
{
//成員函數(shù)和成員變量
};// 注意分號

類的內(nèi)容

類中的內(nèi)容可以分成兩類,一類是 成員變量 , 一類是成員函數(shù)
如果我們認(rèn)識一個人,我們能知道這個人是誰,叫什么名字,是什么性別


class Person
{
//成員函數(shù)
public:void personinfo(){cout << _name << ' ' << _age << ' ' << _sex << endl;}
// 成員變量
private:char* _name;int _age;char* _sex;
};

這里的實現(xiàn)是聲明和定義放在一起的
有時候,類中聲明和函數(shù)放在一起的情況,編譯器可能會把成員函數(shù)看做是內(nèi)聯(lián)函數(shù)

如果我們想要把聲明和實現(xiàn)分離
在這里插入圖片描述
在這里插入圖片描述

在實現(xiàn)的位置,一個是不要忘記頭文件的應(yīng)用
在引用完頭文件后,要說明實現(xiàn)的函數(shù)屬于哪一個類,這里是類的作用域的問題
聲明則放在類里面

訪問限定符

有一件奇怪的事情
為什么成員變量前面要加上 private 而 成員函數(shù)前面要加上 public
這里就設(shè)計到訪問限定符的問題

我們都用過洗衣機,也大概都知道怎么用洗衣機
就那幾個按鈕的事情對吧
我們不會為了使用洗衣機去研究洗衣機的結(jié)構(gòu)

類也是這樣,除了設(shè)計者
使用的人只要會用成員函數(shù)就可以了,并不會去關(guān)注成員變量有哪些

public 變式公共的 ,能夠為外界調(diào)用
private 表示私人,就是不能被類之外的操作訪問,但是類內(nèi)的函數(shù)(成員函數(shù))是可以訪問的

那我們就能夠調(diào)用 public 的函數(shù)來間接按照特定的方式訪問 private 的成員

還有 一個訪問限定符 叫 protected 因為是 簡略說明 ,所以暫時不介紹

其中需要注意的是
class的默認(rèn)訪問權(quán)限為private,struct為public(因為struct要兼容C)
訪問權(quán)限作用域從該訪問限定符出現(xiàn)的位置開始直到下一個訪問限定符出現(xiàn)時為止, 如果后面沒有訪問限定符,作用域就到 } 即類結(jié)束。

而這種通過訪問權(quán)限,隱藏類的成員變量結(jié)構(gòu),顯示類的訪問方式的做法,就是封裝

就好像是洗衣機內(nèi)部被洗衣機外殼包起來,我們看不到內(nèi)部結(jié)構(gòu)的方式,就是封裝
而封裝是面向?qū)ο?的三大特性之一

類的作用域

之前在初識C++ 中,我們說為了防止多個程序員使用同名變量,同名函數(shù)
我們可以用不同的作用域,來圈定哪些變量屬于程序員 A ,哪些變量屬于程序員 B

而當(dāng)我們定義一個類的時候,會自動生成一個類的作用域
不同的類是可以使用同名函數(shù)和變量的,使用類的作用域能夠很好地應(yīng)對這種情況
因為成員變量已經(jīng)在類里面了不用再表明屬于哪一個類
而當(dāng)函數(shù)聲明和實現(xiàn)分離時,在實現(xiàn)函數(shù)的時候,必須指明屬于哪一個類,防止實現(xiàn)的混淆

類的實例化

前面我們解決的是類的聲明的問題
類的聲明,就好像把動物分成一個個種類,比如像熊貓,這是一類動物
但是其中的每一只熊貓都有自己的特征,自己的名字等

這種就叫做實例化
在計算機中,我們說類有 成員函數(shù),成員變量,都是類的聲明
而在使用中調(diào)用的類,才是類的實例化
我們可以簡單理解為為類開空間就是類的實例化

既然為類開空間了,那就說明有空間大小
空間大小是如何計算呢?
尤其是一個類中有成員函數(shù),整個類大大小計算更加奇怪了

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;class Date
{
public:void DateInit(Date& date, int year = 1, int month = 1, int day = 1);
private:int _year;int _month;int _day;
};void Date::DateInit(Date& date,int year,int month,int day)
{date._year = year;date._day = day;date._month = month;
}int main()
{Date d1;d1.DateInit(d1,2023,2,14);cout << sizeof(d1) << endl;return 0;
}

我定義了一個日期類,其中內(nèi)部成員有年月日
通過計算大小,發(fā)現(xiàn)
在這里插入圖片描述
計算大小是 12 ,說明 ---- 內(nèi)部只給內(nèi)部成員開辟了空間,但是沒有給函數(shù)開辟空間
那函數(shù)的空間開辟到哪里去了呢?

實際上,類的空間開辟,是這樣的
事實上,每一個成員雖然不同,但是調(diào)用的成員函數(shù)傳遞的參數(shù)都是一樣的
也就是說,對于類的成員函數(shù)來說
每個類只要把成員函數(shù)需要的參數(shù)傳給我就可以了

成員函數(shù)是不管你是哪一個成員
我們在觀察一下對應(yīng)的匯編代碼
在這里插入圖片描述
可以看到調(diào)用的是同一個函數(shù)
既然編譯器都幫你對應(yīng)的函數(shù)調(diào)用轉(zhuǎn)換了,和調(diào)用一個普通函數(shù)差不多
又何必開辟空間儲存對應(yīng)的函數(shù)指針甚至是整個函數(shù)棧幀呢,答案是沒有必要浪費這個空間

但是要注意的是,如果實例化一個空類(一個沒有內(nèi)容的類)
他的空間大小是 1 ,用來占位

類中的 this 指針

在類的成員函數(shù)中,我們可以這樣寫初始化函數(shù)

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>using namespace std;class Date
{
public:void Init(int year,int month,int day){_year = year;_month = month;_day = day;}
private:int _year;int _month;int _day;
};int main()
{Date d1;d1.Init(2023,2,16);return 0;
}

在調(diào)試中我們能夠看到 d1 被初始化為 2023 2 16
在這里插入圖片描述

但是傳參中,我可是沒有傳遞任何與 d1 相關(guān)的參數(shù)
只是之前的 d1.Init 指定了一下而已
成員函數(shù)是怎么樣找到 d1 然后將 d1 初始化的呢?

實際上,編譯器會自動幫我們傳遞一個 this 指針 的參數(shù)交給成員函數(shù)
這個 this 指針始終指向 調(diào)用這個成員函數(shù)的對象

比如我們 d1.Init 調(diào)用 Init 成員函數(shù)
編譯器會把 this 指針傳參
然后對應(yīng)的成員 變成 this->成員 的解引用
在這里插入圖片描述
但是我們不能直接把 this 指針當(dāng)成一個參數(shù)寫在函數(shù)上面
如果這樣寫,編譯器會傳遞自己在函數(shù)自動傳參的 this 指針
但是 用戶寫的 this 這個形參的坑就沒有人填了,導(dǎo)致形參數(shù)量過多,出現(xiàn)問題

總結(jié)

在這里插入圖片描述

希望大家看完,能夠有所
如果有錯誤,請指出我一定虛心改正
動動小手點贊
鼓勵我輸出更加優(yōu)質(zhì)的內(nèi)容

http://www.risenshineclean.com/news/30514.html

相關(guān)文章:

  • 利用云服務(wù)器做網(wǎng)站谷歌推廣哪家好
  • 企業(yè)咨詢管理有限公司南昌seo全網(wǎng)營銷
  • 免費網(wǎng)站后臺管理系統(tǒng)看廣告收益最高的軟件
  • 濟(jì)南做外貿(mào)網(wǎng)站新冠咳嗽怎么辦
  • 網(wǎng)站怎樣做友情鏈接佛山本地網(wǎng)站建設(shè)
  • 網(wǎng)站開發(fā)看書湖北網(wǎng)站seo
  • 做動漫網(wǎng)站侵權(quán)嗎揚州網(wǎng)絡(luò)優(yōu)化推廣
  • 怎么通過微博做網(wǎng)站外鏈百度seo外包
  • wordpress游戲網(wǎng)站百度優(yōu)化推廣
  • 做網(wǎng)站賭博的推廣是不是犯罪的上海全網(wǎng)推廣
  • 公司網(wǎng)站 域名網(wǎng)絡(luò)營銷成功案例有哪些
  • 商業(yè)網(wǎng)站建設(shè)的方法外國網(wǎng)站怎么進(jìn)入
  • 做圖素材網(wǎng)站開哪個vip好熱搜榜上2023年熱門話題
  • 怎么在外管局的網(wǎng)站做延期seo服務(wù)價格表
  • 怎樣做_網(wǎng)站做seo百度網(wǎng)站的域名地址
  • 3d做號網(wǎng)站每日精選12條新聞
  • 設(shè)計前沿的網(wǎng)站東莞網(wǎng)站關(guān)鍵詞優(yōu)化公司
  • 做社群的網(wǎng)站有哪些西安百度推廣怎么做
  • wordpress html插件優(yōu)化網(wǎng)站做什么的
  • 哪家公司做網(wǎng)站最好網(wǎng)絡(luò)營銷專業(yè)技能
  • 明年做那些網(wǎng)站致富網(wǎng)站優(yōu)化包括哪些
  • 無極網(wǎng)站站怎么有的下不了如何讓百度收錄自己信息
  • 新都網(wǎng)站開發(fā)鄭州百度網(wǎng)站優(yōu)化排名
  • 營銷網(wǎng)站的搭建磁力兔子
  • 類似非小號的網(wǎng)站怎么做軟文推廣一般發(fā)布在哪些平臺
  • 上城網(wǎng)站建設(shè)百度快照推廣是什么意思
  • 網(wǎng)站添加視頻代碼網(wǎng)絡(luò)建站流程
  • 亞馬遜做deal的網(wǎng)站淘寶指數(shù)網(wǎng)址
  • 網(wǎng)站建設(shè)怎樣上傳程序企業(yè)網(wǎng)站營銷的實現(xiàn)方式
  • 做網(wǎng)站的畢設(shè)開題依據(jù)在線注冊網(wǎng)站