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

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

互聯(lián)網(wǎng)公司網(wǎng)站建設(shè)ppt模板下載站長素材免費(fèi)下載

互聯(lián)網(wǎng)公司網(wǎng)站建設(shè)ppt模板下載,站長素材免費(fèi)下載,網(wǎng)站站群,優(yōu)秀移動端網(wǎng)站眾所周知C語言是面向過程的編程語言,關(guān)注的是過程;解決問題前,需要分析求解的步驟,然后編輯函數(shù)逐步解決問題。C是基于面向?qū)ο蟮?amp;#xff0c;關(guān)注的是對象,將一件事拆分成不同的對象,不同對象間交互解決問…

??眾所周知C語言是面向過程的編程語言,關(guān)注的是過程;解決問題前,需要分析求解的步驟,然后編輯函數(shù)逐步解決問題。C++是基于面向?qū)ο?/strong>的,關(guān)注的是對象,將一件事拆分成不同的對象,不同對象間交互解決問題。

一、類的引出

??C語言結(jié)構(gòu)體只能定義變量;而在C++中,結(jié)構(gòu)體不僅可以定義變量,也可以定義函數(shù)。在前期的博文《C語言實(shí)現(xiàn)?!分?#xff0c;使用C語言實(shí)現(xiàn)棧,此時(shí)結(jié)構(gòu)體內(nèi)只能定義變量來構(gòu)造結(jié)構(gòu)體的成員;而C++中,在struct定義的結(jié)構(gòu)體內(nèi)可以構(gòu)造成員函數(shù)。具體如下所示:

struct stack
{
public:stack():_capacity(_capacity==0?4:2*_capacity),_a(new int[_capacity]),_top(0){}void push(const stack& s);void pop();bool empty();int top();int size();~stack(){delete[] _a;_a = nullptr;_top = _capacity = 0;}
private:int* _a;int _top;int _capacity;
};

其中,在public中 stack( )、 ~stack( ) 為成員構(gòu)造函數(shù)、成員析構(gòu)函數(shù),push( )等為成員函數(shù);而在private中的都為成員變量。

二、類的定義

2.1 什么是類

??類是C++的核心特性,通常被稱為用戶定義的類型。類用于指定對象的形式,它包含了數(shù)據(jù)表示方法和處理數(shù)據(jù)的方法。

2.2 類的語法

class className
{//類體由成員函數(shù)和成員變量組成
};//分號不可遺漏

??class為定義類的關(guān)鍵字classname為類的名字,{ }中為類的主體;此外,類的{ }結(jié)束后的分號不可省略。

類主體內(nèi)容稱為類的成員:類中變量稱為類的屬性成員變量;類中函數(shù)稱為類的方法成員函數(shù)。

類的兩種定義方式

  1. 聲明和定義全部放在類體中;
  2. 聲明與定義分離;類聲明放在.h文件中,成員函數(shù)放在.cpp文件中;此外,在.cpp定義文件中,定義成員函數(shù)時(shí),需要在函數(shù)名前、返回值類型后添加類名::
//聲明與定義全在類體中
struct Date
{
public:Date(int year = 2000,int month = 10,int day = 1):_year(year),_month(month),_day(day){}Date(const Date& d){_year = d._year;_month = d._month;_day = d._day;}void Print(){cout << _year << "年" << _month << "月" << _day << "日" << endl;}~Date(){_year = 0;_month = 0;_day = 0;}
private:int _year;int _month;int _day;
};

第二種聲明與定義分離方式為:

//stack.h文件
struct Date
{
public:Date(int year = 2000, int month = 10, int day = 1);Date(const Date& d);void Print();~Date();
private:int _year;int _month;int _day;
};//stack.cpp文件
Date::Date(int year , int month , int day ):_year(year), _month(month), _day(day)
{}Date::Date(const Date& d)
{_year = d._year;_month = d._month;_day = d._day;
}
void Date::Print()
{cout << _year << "年" << _month << "月" << _day << "日" << endl;
}Date::~Date()
{_year = 0;_month = 0;_day = 0;
}

三、類的訪問限定符號及封裝

3.1 訪問限定符

C++實(shí)現(xiàn)封裝的方式:用類將對象的屬性與方法結(jié)合在一起,讓對象更加完善,通過訪問權(quán)限選擇性的將其接口提供給外部用戶使用。

在這里插入圖片描述

訪問限定符說明:

  1. public修飾的成員在類外可以直接被訪問;

  2. protectedprivate修飾的成員在類外不能直接被訪問;

  3. 訪問權(quán)限作用域從該訪問限定符出現(xiàn)的位置開始直到下一個(gè)訪問限定符出現(xiàn)為止;

  4. 如果后面沒有訪問限定符,作用域就到}即類結(jié)束;

  5. class的默認(rèn)訪問權(quán)限為private,struct為public(因?yàn)閟truct要兼容C)。

注意:訪問限定符只在編譯時(shí)有用,當(dāng)數(shù)據(jù)映射到內(nèi)存后,沒有任何訪問限定符上的區(qū)別。

3.2 封裝

??面向?qū)ο蟮娜筇匦?#xff1a;封裝繼承、多態(tài)

??封裝:將數(shù)據(jù)和操作數(shù)據(jù)的方法進(jìn)行有機(jī)結(jié)合,隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對外公開接口來和對象進(jìn)行交互。

??封裝本質(zhì)上是一種管理,讓用戶更方便使用類。在C++語言中實(shí)現(xiàn)封裝,可以通過類將數(shù)據(jù)以及操作數(shù)據(jù)的方法進(jìn)行有機(jī)結(jié)合,通過訪問權(quán)限來隱藏對象內(nèi)部實(shí)現(xiàn)細(xì)節(jié),控制哪些方法可以在類外部直接被使用。

四、類的作用域

??類定義了一個(gè)新的作用域,類的所有成員都在類的作用域中。在類體外定義成員時(shí),需要使用::作用域操作符指明成員屬于哪個(gè)類域。

??在下列個(gè)人信息類中,add( )屬于person這個(gè)類域;個(gè)人的成員變量也屬于這個(gè)類域。

class person
{
public:void add();
private:int _year;int _sex;int _height;int _weight;int _tel;
};
int main()
{Date d1;d1.Print();return 0;
}

五、類的實(shí)例化

??用類類型創(chuàng)建對象的過程,稱為類的實(shí)例化。

  • 類是對對象進(jìn)行描述的,是一個(gè)模型一樣的東西,限定了有哪些成員,定義出一個(gè)類并沒有分配實(shí)際的內(nèi)存空間來存儲它;

  • 一個(gè)類可以實(shí)例化多個(gè)對象,實(shí)例化 出的對象,占用實(shí)際的物理空間,存儲類成員變量;

class person
{
public:void PrintPersonInfo();
private:char _name[20];char _gender[3];int _age;
};void Person::PrintPersonInfo()
{cout<<_name<<" "<<_gender<<" "<<_age<<endl;
}

注意person類是沒有空間的,只有person類實(shí)例化出來的對象才占用空間。

六、類對象模型

??在Date類中,既有成員函數(shù)又有成員變量;那么Date類占用多少存儲空間?

int main()
{Date d1;cout << "d1所占空間:" << sizeof(d1) << endl;return 0;
}

Date類對象d1初始化后,占用了12字節(jié);若Date類沒有初始化對象,不會占用存儲空間。

image-20230219210913225

6.1 類對象的存儲

  • 對象中包含類的各個(gè)成員

image-20230219215935973

  • 代碼只保存一份,在對象中保存存放代碼的地址

  • 只保存成員變量,成員函數(shù)存放在公共的代碼段

image-20230219221015273

6.2 結(jié)構(gòu)體內(nèi)存對齊規(guī)則

  1. 第一個(gè)成員與結(jié)構(gòu)體偏移量為0的地址處;

  2. 其他成員變量要對齊到某個(gè)數(shù)字(對齊數(shù))的整數(shù)倍的地址處;

  3. 結(jié)構(gòu)體總大小為:最大對齊數(shù)(所有變量類型最大者與默認(rèn)對齊參數(shù)取最小)的整數(shù)倍;

  4. 如果嵌套了結(jié)構(gòu)體的情況,嵌套的結(jié)構(gòu)體對齊到自己的最大對齊數(shù)的整數(shù)倍處,結(jié)構(gòu)體的整體大小就是所有最大對齊數(shù)(含嵌套結(jié)構(gòu)體的對齊數(shù))的整數(shù)倍。

注意:對齊數(shù)=編譯器默認(rèn)的一個(gè)對齊數(shù)與該成員大小的較小值;VS中默認(rèn)的對齊數(shù)為8。

七、this指針

7.1 類中this指針的使用

??在下列Date類中,有InitPrint兩個(gè)成員函數(shù),函數(shù)體中沒有關(guān)于不同對象的區(qū)分,若對象d1需要調(diào)用這兩個(gè)函數(shù)時(shí),C++引入了this指針。C++編譯器給每個(gè)非靜態(tài)的成員函數(shù)增加了一個(gè)隱藏的指針參數(shù),讓this指針指向當(dāng)前對象(函數(shù)運(yùn)行時(shí)調(diào)用該函數(shù)的對象),在函數(shù)體中所有“成員變量”的操作,都是通過該指針去訪問。這些操作不需要用戶操作,編譯器自動完成。

class Date
{
public:void Init(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout <<_year<< "-" <<_month << "-"<< _day <<endl;}private:int _year;int _month; int _day; 
};int main()
{Date d1, d2;d1.Init(2022,1,11);d2.Init(2022, 1, 12);d1.Print();d2.Print();return 0;
}

7.2 this指針的特性

  1. this指針的類型:類類型 const*,即成員函數(shù)中,不能給this指針賦值;
  2. 只能在“成員函數(shù)”的內(nèi)部使用;
  3. this指針本質(zhì)上是“成員函數(shù)”的形參,當(dāng)對象調(diào)用函數(shù)時(shí),將對象地址作為實(shí)參傳遞給this形參。所以對象中不存儲this指針
  4. this指針是“成員函數(shù)”第一個(gè)隱含的指針形參,一般情況由編譯器通過ecx寄存器自動傳遞,不需要用戶傳遞。

在這里插入圖片描述

http://m.risenshineclean.com/news/58356.html

相關(guān)文章:

  • 網(wǎng)站架構(gòu)設(shè)計(jì)師蘋果cms永久免費(fèi)建站程序
  • wordpress添加logo武漢seo霸屏
  • 如何自己做個(gè)簡單網(wǎng)站神馬搜索推廣
  • 酒店 網(wǎng)站建設(shè) 中企動力如何引流推廣
  • 什么網(wǎng)站做海報(bào)賺錢武漢大學(xué)人民醫(yī)院
  • 2345應(yīng)用商店深圳網(wǎng)站設(shè)計(jì)十年樂云seo
  • 重慶優(yōu)化網(wǎng)站推廣seo點(diǎn)擊
  • 湘潭網(wǎng)站優(yōu)化公司服務(wù)營銷案例
  • 牡丹江站建站seo推廣
  • 網(wǎng)站的圖書資源建設(shè)網(wǎng)絡(luò)工程師是干什么的
  • 泰安網(wǎng)絡(luò)教育肇慶seo優(yōu)化
  • html5 中文網(wǎng)站模板廣告設(shè)計(jì)網(wǎng)站
  • io游戲網(wǎng)站濟(jì)南特大最新消息
  • 用vs怎么做網(wǎng)站的導(dǎo)航百度廣告位價(jià)格表
  • 怎么制作自己的免費(fèi)網(wǎng)站濟(jì)南做網(wǎng)站建設(shè)的公司
  • 網(wǎng)站構(gòu)建的友情鏈接怎么做營銷的方法和技巧
  • wordpress緩存無法清除seo網(wǎng)址
  • web 網(wǎng)站做甘特圖視頻app推廣
  • 合肥企業(yè)網(wǎng)站建設(shè)靠譜山東大學(xué)經(jīng)濟(jì)研究院
  • 怎么做優(yōu)惠卷網(wǎng)站廣東seo教程
  • 網(wǎng)站建設(shè)的費(fèi)用怎么做賬正規(guī)的計(jì)算機(jī)培訓(xùn)機(jī)構(gòu)
  • 營銷策劃方案ppt模板沈陽企業(yè)網(wǎng)站seo公司
  • 建設(shè)電影播放網(wǎng)站網(wǎng)絡(luò)廣告的計(jì)費(fèi)方式
  • 做外貿(mào)找工廠貨源網(wǎng)站最新百度關(guān)鍵詞排名
  • 旅游門戶網(wǎng)站有哪些網(wǎng)站怎么優(yōu)化排名
  • 有什么可以做兼職的正規(guī)網(wǎng)站百度快照怎么刪除
  • 做網(wǎng)站用哪個(gè)軟件好廣告網(wǎng)站留電話不用驗(yàn)證碼
  • 一級a做片性視頻.網(wǎng)站在線觀看阿里巴巴數(shù)據(jù)分析官網(wǎng)
  • 企業(yè)logo設(shè)計(jì)規(guī)范廣州百度快速優(yōu)化排名
  • PHP MYSQL網(wǎng)站開發(fā)全程實(shí)百度搜索排行