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

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

音樂網(wǎng)站開發(fā)畢業(yè)論文創(chuàng)建網(wǎng)站需要多少資金

音樂網(wǎng)站開發(fā)畢業(yè)論文,創(chuàng)建網(wǎng)站需要多少資金,wordpress彈窗插件,江蘇住建廳特種作業(yè)證這篇文章的主要內(nèi)容是const以及權(quán)限問題、static關(guān)鍵字、友元函數(shù)和友元類,希望對(duì)大家有所幫助,點(diǎn)贊收藏評(píng)論支持一下吧! 更多優(yōu)質(zhì)內(nèi)容跳轉(zhuǎn): 專欄:重生之C啟程(文章平均質(zhì)量分93) 目錄 const以及權(quán)限問題 1.const修飾…

這篇文章的主要內(nèi)容是const以及權(quán)限問題static關(guān)鍵字、友元函數(shù)和友元類,希望對(duì)大家有所幫助,點(diǎn)贊收藏評(píng)論支持一下吧!

更多優(yōu)質(zhì)內(nèi)容跳轉(zhuǎn):

專欄:重生之C++啟程(文章平均質(zhì)量分93)

目錄

const以及權(quán)限問題

1.const修飾內(nèi)置類型

(1).const修飾普通變量

(2).const修飾指針變量

2.const修飾自定義類型

3.const修飾函數(shù)

(1).const修飾函數(shù)形參

(2).const修飾函數(shù)返回類型

4.權(quán)限的放大、縮小、平移

static的效果

(1).靜態(tài)成員變量

(2).靜態(tài)成員函數(shù)

友元函數(shù)&友元類

(1).友元函數(shù)

(2).友元類


const以及權(quán)限問題

1.const修飾內(nèi)置類型

const名叫常量限定符,用來(lái)限定特定變量,使得這個(gè)變量不可被修改,這在特定的情況是非常實(shí)用的,比如一些只讀不可寫的變量,可以用const來(lái)限定。

(1).const修飾普通變量

在C++或者C語(yǔ)言中,const修飾普通變量的形式如下:

const int a = 10;

也可以將const和變量相鄰

int const a = 10;

對(duì)于普通變量,這兩種寫法是一樣的,都是限制a變量,使得a變量不可被修改。

強(qiáng)行修改會(huì)出現(xiàn)編譯錯(cuò)誤。這就是常量限定符的作用。

(2).const修飾指針變量

先給出變量a的指針p

int a = 10;
int* p = &a;

這里兩點(diǎn)非常重要const直接修飾p,會(huì)導(dǎo)致p不可改變,即指針指向不能改變。

? ? ? ? ? ? ? ? ? ??????????????const直接修飾*p,會(huì)導(dǎo)致*p不可改變,即指針指向的內(nèi)容不可改變。

此時(shí),會(huì)出現(xiàn)以下三種const對(duì)指針變量p的修飾

(1)const int* p = &a;
等價(jià)寫法:int const * p = &a;

此時(shí),const在*p前面,直接修飾*p,即指針指向的內(nèi)容(*p)不可改變,但指針指向(p)可以改變。

(2)int* const p = &a;

此時(shí),const在p前面,直接修飾p,即指針指向(p)不可改變,指針指向的內(nèi)容(*p)可以改變。?

(3)const int* const p = &a;

此時(shí)const雙重限定,既在*p前面,又在p前面,即指針指向(p)和指針指向內(nèi)容(*p)都不可改變。?

2.const修飾自定義類型

const也可以修飾自定義類型對(duì)象,賦予對(duì)象常屬性,保護(hù)對(duì)象內(nèi)的成員變量不可被修改const對(duì)象調(diào)用它的成員函數(shù)時(shí),this指針也是const類型。

有關(guān)this指針詳細(xì)介紹:重生之我要學(xué)C++第三天(類和對(duì)象)_無(wú)極太族的博客-CSDN博客

Date類來(lái)舉例:

#include<iostream>
using namespace std;
class Date
{
public: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()
{const Date d1;//創(chuàng)建const類型對(duì)象d1return 0;
}

此時(shí),用d1調(diào)用成員函數(shù)

d1.Print();

會(huì)出現(xiàn)編譯錯(cuò)誤。原因是const對(duì)象調(diào)用成員函數(shù)時(shí),傳給成員函數(shù)的this指針也是const類型。

但是此時(shí)成員函數(shù)的隱式形參是非const類型的this指針

void Print(Date* const this)//這個(gè)const是默認(rèn)的,保證指向不能改變但是指向的內(nèi)容還是可以改變

就會(huì)將const對(duì)象指針傳給非const對(duì)象指針,涉及權(quán)限的放大:const對(duì)象的成員變量是不可以修改的,但是這個(gè)this指針只是指向不能改變,指向的內(nèi)容還是可以改變。

要想解決這個(gè)問題,就需要將成員函數(shù)內(nèi)的隱式形參this指針改為const類型。下面介紹const和函數(shù)有關(guān)概念來(lái)解決這個(gè)問題。

3.const修飾函數(shù)

(1).const修飾函數(shù)形參

const修飾函數(shù)形參的作用是用const類型對(duì)象來(lái)接收實(shí)參,保證實(shí)參不會(huì)被改變。在成員函數(shù)中,形參還有隱式的this指針,用來(lái)接受對(duì)象的地址。但是由于這個(gè)形參是隱式的,我們無(wú)法直接將其改為const類型。這時(shí)只需要在成員函數(shù)后面加上const

void Print()const
{cout << _year << "/" << _month << "/" << _day << endl;
}

相當(dāng)于給隱式的this指針加上const(前面的const)

void Print(const Date* const this)

這樣const對(duì)象就可以調(diào)用對(duì)象的這個(gè)const成員函數(shù)了。?

在這里const加在*this前面,意味著this指向?qū)ο蟮膬?nèi)容不可以改變。

const修飾this指針還可以構(gòu)成函數(shù)重載:在對(duì)象調(diào)用的時(shí)候,const對(duì)象和非const對(duì)象分別調(diào)用

const void Print()const  //const對(duì)象調(diào)用:只讀
{cout << _year << "/" << _month << "/" << _day << endl;
}
void Print()             //非const對(duì)象調(diào)用:可讀可寫
{cout << _year << "/" << _month << "/" << _day << endl;
}

(2).const修飾函數(shù)返回類型

const修飾函數(shù)的返回類型可以限制對(duì)象,保證返回對(duì)象不可被改變。

4.權(quán)限的放大、縮小、平移

在C++中,權(quán)限只能平移,縮小。禁止放大。例如:

const int a = 10;int& b = a;

此時(shí)會(huì)出現(xiàn)編譯錯(cuò)誤,因?yàn)閍是const類型,不能改變。但是引用b不是const類型,b可以間接改變a,所以會(huì)編譯錯(cuò)誤。?這就是權(quán)限的放大。

const int a = 10;
const int& b = a;

這樣就是權(quán)限的平移。

int a = 10;
const int& b = a;

這就是權(quán)限的縮小。?

注意:隱式類型轉(zhuǎn)換中間會(huì)生成臨時(shí)變量,臨時(shí)變量具有常性。

舉個(gè)栗子:

double d = 1.1;
int& a = d;

此時(shí)編譯錯(cuò)誤,原因不是類型不匹配,而是d賦值給int類型引用a時(shí),會(huì)將d先隱式類型轉(zhuǎn)換為const int& 類型,這時(shí)候只需將代碼改為

double d = 1.1;
const int& a = d;

就可以通過編譯。?

static的效果

定義:聲明為static的類成員稱為類的靜態(tài)成員,用static修飾的成員變量,稱之為靜態(tài)成員變量;用 static修飾的成員函數(shù),稱之為靜態(tài)成員函數(shù)。靜態(tài)成員變量一定要在類外進(jìn)行初始化。

(1).靜態(tài)成員變量

在類中static修飾的變量稱為靜態(tài)成員變量,由于static修飾,該成員變量在靜態(tài)區(qū)存放,屬于該類。類的所用對(duì)象公用,并不單獨(dú)屬于某個(gè)對(duì)象(這個(gè)特點(diǎn)和成員函數(shù)類似),所以靜態(tài)成員變量的定義不在參數(shù)列表中必須在類外面進(jìn)行定義,類里負(fù)責(zé)靜態(tài)成員變量的聲明

#include<iostream>
using namespace std;
class A
{
private:static int _a;//聲明
};
int A::_a = 0;//類外定義
int main()
{A a;return 0;
}

(2).靜態(tài)成員函數(shù)

在類中static修飾的成員函數(shù)稱為靜態(tài)成員函數(shù),由于static修飾,該成員函數(shù)屬于類。由于靜態(tài)成員函數(shù)沒有隱式this指針,在特定對(duì)象調(diào)用時(shí),只能訪問該類的靜態(tài)成員變量不能訪問對(duì)象的非靜態(tài)成員變量??梢灶惷?:靜態(tài)成員函數(shù)名 直接調(diào)用。

補(bǔ)充,類外面突破類域的三種方式(友元下面介紹):

不使用友元訪問成員變量或者成員函數(shù)必須是共有的。

1.創(chuàng)建對(duì)象,通過 對(duì)象. ? ? ? ? ? 適用于訪問公有(靜態(tài)、非靜態(tài))成員變量和函數(shù)。

2.對(duì)象指針,通過 指針-> ? ? ? ?當(dāng)指針為空時(shí),可以訪問公有成員函數(shù)(靜態(tài)非靜態(tài))和公有靜態(tài)成員變量。因?yàn)楣谐蓡T函數(shù)和公有靜態(tài)成員變量都不屬于對(duì)象,不會(huì)有解引用空指針的錯(cuò)誤。當(dāng)指針不為空,和對(duì)象的訪問權(quán)限相同。

3.通過 類名:: ? ? ?適用于訪問公有靜態(tài)成員變量和公有靜態(tài)成員函數(shù)。此處只能訪問屬于類的靜態(tài)屬性的成員。

友元函數(shù)&友元類

(1).友元函數(shù)

定義:友元函數(shù)可以直接訪問類的私有成員,它是定義在類外部的普通函數(shù),不屬于任何類,但需要在類的內(nèi)部聲明,聲明時(shí)需要加friend關(guān)鍵字。例如:

#include<iostream>
using namespace std;
class A
{friend void Print(A& a);//友元函數(shù)聲明
private:int _a=1;
};
void Print(A& a)//友元函數(shù)定義
{cout << a._a << endl;//friend就可以直接訪問類的私有成員
}
int main()
{A a;Print(a);return 0;
}

注意

1.友元函數(shù)不能用const修飾

2.一個(gè)函數(shù)可以是多個(gè)類的友元函數(shù)

(2).友元類

友元類可以直接訪問類的私有成員,友元類和另一個(gè)類相互獨(dú)立,只允許該類的友元類訪問該類的私有成員,不允許該類訪問友元類的私有成員。

class Time
{friend class Date;   // 聲明日期類為時(shí)間類的友元類,則在日期類中就直接訪問Time類
中的私有成員變量
public:Time(int hour = 0, int minute = 0, int second = 0): _hour(hour), _minute(minute), _second(second){}private:int _hour;int _minute;int _second;
};
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1): _year(year), _month(month), _day(day){}void SetTimeOfDate(int hour, int minute, int second){// 直接訪問時(shí)間類私有的成員變量_t._hour = hour;_t._minute = minute;_t._second = second;}private:int _year;int _month;int _day;Time _t;
};

友元類特性

1.友元關(guān)系是單向的,不具有交換性。 比如上述Time類和Date類,在Time類中聲明Date類為其友元類,那么可以在Date類中直接 訪問Time類的私有成員變量,但想在Time類中訪問Date類中私有的成員變量則不行。

2.友元關(guān)系不能傳遞 如果C是B的友元, B是A的友元,則不能說明C時(shí)A的友元。

3.友元關(guān)系不能繼承。

今天的分享就到這里啦,如果對(duì)大家有幫助的話,記得收藏,希望程序猿們可以三連支持以下,會(huì)繼續(xù)分享知識(shí)!謝謝閱讀!

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

相關(guān)文章:

  • 網(wǎng)站建設(shè)初步認(rèn)識(shí)的實(shí)訓(xùn)體會(huì)行業(yè)網(wǎng)站有哪些平臺(tái)
  • 中山制作網(wǎng)站的公司西安網(wǎng)站推廣慧創(chuàng)科技
  • 互聯(lián)網(wǎng)下的網(wǎng)絡(luò)營(yíng)銷前端seo是什么意思
  • 網(wǎng)站建設(shè)營(yíng)銷方案整站外包優(yōu)化公司
  • 泉州北京網(wǎng)站建設(shè)如何制作app軟件
  • phpcms學(xué)校網(wǎng)站模板如何制作微信小程序店鋪
  • wordpress 社交分享肇慶seo排名外包
  • 網(wǎng)站倒計(jì)時(shí)代碼資源企業(yè)網(wǎng)站排名優(yōu)化價(jià)格
  • html制作網(wǎng)站的步驟網(wǎng)絡(luò)服務(wù)包括
  • 企業(yè)域名是什么網(wǎng)站seo關(guān)鍵詞設(shè)置
  • 網(wǎng)站設(shè)計(jì)營(yíng)銷網(wǎng)站出租三級(jí)域名費(fèi)用
  • 做視頻網(wǎng)站視頻的軟件企業(yè)營(yíng)銷培訓(xùn)課程
  • 女性時(shí)尚網(wǎng)站源碼客戶關(guān)系管理
  • 有沒有免費(fèi)的微網(wǎng)站視頻營(yíng)銷模式有哪些
  • 昭通網(wǎng)站建設(shè)如何提高網(wǎng)站排名的方法
  • 二手站網(wǎng)站怎做優(yōu)化課程體系
  • 招聘 負(fù)責(zé)網(wǎng)站開發(fā)網(wǎng)絡(luò)營(yíng)銷有什么方式
  • 網(wǎng)站做cdn百度網(wǎng)頁(yè)版入口
  • 網(wǎng)站信息發(fā)布制度建設(shè)seo網(wǎng)站優(yōu)化排名
  • 建網(wǎng)站哪便宜百度網(wǎng)站提交入口網(wǎng)址
  • 網(wǎng)頁(yè)跟網(wǎng)站的區(qū)別百度seo2022
  • 開發(fā)app的注意事項(xiàng)seo代理計(jì)費(fèi)系統(tǒng)
  • 兩耳清風(fēng)怎么做網(wǎng)站南京網(wǎng)絡(luò)優(yōu)化培訓(xùn)
  • 校園網(wǎng)站建設(shè)論文域名大全查詢
  • wordpress+4.9+google蘋果aso優(yōu)化
  • 做網(wǎng)站還要寫文章嗎品牌運(yùn)營(yíng)中心
  • 做圖片網(wǎng)站用什么程序百度地圖導(dǎo)航手機(jī)版免費(fèi)下載
  • 可以先做網(wǎng)站后備案么app拉新推廣平臺(tái)有哪些
  • 2345網(wǎng)址導(dǎo)航手機(jī)上網(wǎng)導(dǎo)航下載seo網(wǎng)絡(luò)推廣教程
  • 秦皇島建設(shè)網(wǎng)站品牌宣傳方式