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

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

邯鄲網(wǎng)站建設(shè)哪家好windows優(yōu)化大師怎么使用

邯鄲網(wǎng)站建設(shè)哪家好,windows優(yōu)化大師怎么使用,網(wǎng)站建設(shè)合同甲乙雙方怎么確定,做網(wǎng)站首選智投未來1類和對(duì)象(1) 一、類的相關(guān)內(nèi)容1.訪問限定符2.class關(guān)鍵字與struct關(guān)鍵字的區(qū)別3.類域 二、this指針三、成員函數(shù)存放在哪里?1. 函數(shù)的存放位置2. 練習(xí)題 一、類的相關(guān)內(nèi)容 1.訪問限定符 (1)C?種實(shí)現(xiàn)封裝的?式&…

類和對(duì)象(1)

  • 一、類的相關(guān)內(nèi)容
    • 1.訪問限定符
    • 2.class關(guān)鍵字與struct關(guān)鍵字的區(qū)別
    • 3.類域
  • 二、this指針
  • 三、成員函數(shù)存放在哪里?
    • 1. 函數(shù)的存放位置
    • 2. 練習(xí)題

一、類的相關(guān)內(nèi)容

1.訪問限定符

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

(2)public修飾的成員在類外可以直接被訪問;protected和private修飾的成員在類外不能直接被訪
問,protected和private是?樣的,以后繼承章節(jié)才能體現(xiàn)出他們的區(qū)別。

(3)訪問權(quán)限作?域從該訪問限定符出現(xiàn)的位置開始直到下?個(gè)訪問限定符出現(xiàn)時(shí)為?,如果后?沒有訪問限定符,作?域就到 }即類結(jié)束。

(4)class定義成員沒有被訪問限定符修飾時(shí)默認(rèn)為private,struct默認(rèn)為public。

(5)?般成員變量都會(huì)被限制為private/protected,需要給別?使?的成員函數(shù)會(huì)放為public。
在這里插入圖片描述

2.class關(guān)鍵字與struct關(guān)鍵字的區(qū)別

(1)class為定義類的關(guān)鍵字,后面跟類的名字,{}中為類的主體,注意類定義結(jié)束時(shí)后?分號(hào)不能省
略。類體中內(nèi)容稱為類的成員;類中的變量稱為類的屬性或成員變量; 類中的函數(shù)稱為類的?法或
者成員函數(shù)。
(2)C++中struct也可以定義類,C++兼容C中struct的?法,同時(shí)struct升級(jí)成了類,明顯的變化是
struct中可以定義函數(shù)。

#include<iostream>
using namespace std;
// C++升級(jí)struct升級(jí)成了類
// 1、類??可以定義函數(shù)
// 2、struct名稱就可以代表類型
// C++兼容C中struct的?法//這是c語言結(jié)構(gòu)體的定義:ListNodeC不能代表類型,要加上struct關(guān)鍵字,除非typedef
typedef struct ListNodeC
{struct ListNodeC* next;int val;
}LTNode;// 不再需要typedef,ListNodeCPP就可以代表類型
struct ListNodeCPP
{void Init(int x){next = nullptr;val = x;}ListNodeCPP* next;int val;
};
int main()
{return 0;
}

3.類域

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

(2)類域影響的是編譯的查找規(guī)則,下?程序中Init如果不指定類域Stack,那么編譯器就把Init當(dāng)成全
局函數(shù),那么編譯時(shí),找不到array等成員的聲明/定義在哪?,就會(huì)報(bào)錯(cuò)。指定類域Stack,就是知
道Init是成員函數(shù),當(dāng)前域找不到的array等成員,就會(huì)到類域中去查找。

#include<iostream>
using namespace std;
class Stack
{
public:
// 成員函數(shù)void Init(int n = 4);
private:
// 成員變量int* array;size_t capacity;size_t top;
};
// 聲明和定義分離,需要指定類域
void Stack::Init(int n)  //缺省值只能在聲明定義
{array = (int*)malloc(sizeof(int) * n);if (nullptr == array){perror("malloc申請(qǐng)空間失敗");return;}capacity = n;top = 0;
}
int main()
{Stack st;st.Init();return 0;
}

二、this指針

(1)Date類中有 Init 與 Print 兩個(gè)成員函數(shù),函數(shù)體中沒有關(guān)于不同對(duì)象的區(qū)分,而且成員函數(shù)并不屬于某一個(gè)對(duì)象,同類的所有對(duì)象共享一份成員函數(shù)。那當(dāng)d1調(diào)?Init和Print函數(shù)時(shí),該函數(shù)是如何知道應(yīng)該訪問的是d1對(duì)象還是d2對(duì)象呢?那么這?就要看到C++給了?個(gè)隱含的this指針解決這?的問題。

(2)編譯器編譯后,類的成員函數(shù)默認(rèn)都會(huì)在形參第?個(gè)位置,增加?個(gè)當(dāng)前類類型的指針,叫做this
指針。?如Date類的Init的真實(shí)原型為, void Init(Date* const this, int year,int month, int day)。

(3)類的成員函數(shù)中訪問成員變量,本質(zhì)都是通過this指針訪問的,如Init函數(shù)中給_year賦值,
this->_year = year。

(4)C++規(guī)定不能在實(shí)參和形參的位置顯?的寫this指針(編譯時(shí)編譯器會(huì)處理),但是可以在函數(shù)體內(nèi)顯?使?this指針。

#include<iostream>
using namespace std;
class Date
{
public:
// void Init(Date* const this, int year, int month, int day)
void Init(int year, int month, int day)
{//注意:this指針只能指向當(dāng)前對(duì)象
// 編譯報(bào)錯(cuò):error C2106: “=”: 左操作數(shù)必須為左值
// this = nullptr;_year = year;this->_month = month;this->_day = day;
}
void Print()
{cout << _year << "/" << _month << "/" << _day << endl;
}
private:// 這?只是聲明,沒有開空間int _year;int _month;int _day;
};
int main()
{
// Date類實(shí)例化出對(duì)象d1和d2Date d1;Date d2;
// d1.Init(&d1, 2024, 3, 31);d1.Init(2024, 3, 31);d1.Print();d2.Init(2024, 7, 5);d2.Print();return 0;
}

三、成員函數(shù)存放在哪里?

1. 函數(shù)的存放位置

  1. 代碼段存儲(chǔ):
    無論是全局函數(shù)、靜態(tài)成員函數(shù)、const成員函數(shù)還是普通成員函數(shù),在編譯后都會(huì)被放置在代碼段中。這是因?yàn)?strong>函數(shù)代碼是共享資源,不需要為每個(gè)對(duì)象實(shí)例都復(fù)制一份,更不會(huì)直接存儲(chǔ)在對(duì)象的內(nèi)存布局中。
  2. 對(duì)象不存儲(chǔ)函數(shù)代碼:
    當(dāng)我們創(chuàng)建一個(gè)類的對(duì)象時(shí),對(duì)象本身只包含其數(shù)據(jù)成員和可能的虛函數(shù)表指針(如果類包含虛函數(shù))。成員函數(shù)代碼并不存儲(chǔ)在對(duì)象中。
  3. this指針的作用:
    當(dāng)成員函數(shù)被調(diào)用時(shí),編譯器會(huì)自動(dòng)傳遞一個(gè)指向調(diào)用對(duì)象的指針,即this指針。這個(gè)指針使得成員函數(shù)能夠訪問和修改對(duì)象的數(shù)據(jù)成員。this指針并不是成員函數(shù)的存儲(chǔ)位置,而是函數(shù)訪問對(duì)象數(shù)據(jù)成員的橋梁。
  4. 虛函數(shù)和虛函數(shù)表:
    如果類包含虛函數(shù),編譯器會(huì)為每個(gè)包含虛函數(shù)的類生成一個(gè)虛函數(shù)表(vtable)。虛函數(shù)表包含了指向虛函數(shù)實(shí)現(xiàn)的指針。對(duì)象實(shí)例中包含一個(gè)指向其所屬類的虛函數(shù)表的指針(vptr)。當(dāng)通過基類指針或引用調(diào)用虛函數(shù)時(shí),會(huì)根據(jù)虛函數(shù)表找到正確的函數(shù)實(shí)現(xiàn)進(jìn)行調(diào)用。(詳情看多態(tài)一節(jié))。

例如:
在這里插入圖片描述
匯編角度:
在這里插入圖片描述

2. 練習(xí)題

#include<iostream>
using namespace std;
class A
{
public:void Print(){cout << "A::Print()" << endl;}
private:int _a;
};
int main()
{A* p = nullptr;p->Print();return 0;
}

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

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

相關(guān)文章:

  • php做網(wǎng)站中下一步按鈕中國職業(yè)培訓(xùn)在線平臺(tái)
  • 做網(wǎng)店在素材網(wǎng)站找的圖侵權(quán)嗎地域名網(wǎng)址查詢
  • 水印在線制作網(wǎng)站百度識(shí)圖搜索
  • 校園網(wǎng)站建設(shè) 方案論證一鍵搭建網(wǎng)站
  • 網(wǎng)站目錄架構(gòu)網(wǎng)店代運(yùn)營公司靠譜嗎
  • 阿里云服務(wù)器怎么做網(wǎng)站windows優(yōu)化大師官方
  • 網(wǎng)站寬度 1000px長(zhǎng)沙網(wǎng)絡(luò)科技有限公司
  • 做建網(wǎng)站的工作一年賺幾百萬百度小說app下載
  • 新生活cms訂貨系統(tǒng)網(wǎng)站運(yùn)營推廣選擇樂云seo
  • 可信的品牌網(wǎng)站建設(shè)病毒營銷案例
  • 找長(zhǎng)期合作加工廈門最快seo
  • 門面設(shè)計(jì)效果圖福建seo外包
  • 想做一個(gè)網(wǎng)站怎么做google關(guān)鍵詞規(guī)劃師
  • 域名 a記錄 手機(jī)網(wǎng)站杭州網(wǎng)站優(yōu)化
  • 網(wǎng)絡(luò)做翻譯的網(wǎng)站愛站seo綜合查詢
  • asp.net網(wǎng)站開發(fā)案例教程湖北網(wǎng)站seo策劃
  • 常州做網(wǎng)站的公司有哪些今天實(shí)時(shí)熱搜榜排名
  • 重慶今天最新消息漯河seo公司
  • wordpress站點(diǎn)全屏快速排名優(yōu)化推廣手機(jī)
  • 做金融類網(wǎng)站西安企業(yè)seo外包服務(wù)公司
  • 做html網(wǎng)站搜索框代碼新浪輿情通官網(wǎng)
  • asp網(wǎng)站搭建軟件南寧網(wǎng)站優(yōu)化
  • 代替手動(dòng)修改網(wǎng)站模板標(biāo)簽seo標(biāo)題優(yōu)化分析范文
  • 網(wǎng)站標(biāo)題如何書寫軟文接單平臺(tái)
  • 泰州網(wǎng)站設(shè)計(jì)哪家好網(wǎng)上營銷的平臺(tái)有哪些
  • 網(wǎng)站建設(shè)技能描述免費(fèi)發(fā)布推廣平臺(tái)
  • nike網(wǎng)站建設(shè)方案診斷網(wǎng)站seo現(xiàn)狀的方法
  • 西安網(wǎng)站制作百億科技全國廣告投放平臺(tái)
  • 石家莊做網(wǎng)站的公司有哪些怎么制作鏈接網(wǎng)頁
  • 建模培訓(xùn)機(jī)構(gòu)優(yōu)化seo網(wǎng)站