成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C++學(xué)習(xí)第十九天:類(lèi)與對(duì)象:const修飾成員函數(shù),友元,運(yùn)算符重載-創(chuàng)新互聯(lián)

一、const修飾成員函數(shù) 一)、特點(diǎn) 1、不可修改屬性

在這里插入圖片描述
不可以修改成員的屬性,在成員函數(shù)后面加const(既不可以修改指向,也不可以修改值),本質(zhì)上是修飾的this指針,而this指針本質(zhì)上是指針常量(哪個(gè)對(duì)象調(diào)用該成員函數(shù),這個(gè)this指針就指向誰(shuí),不可以修改指針指向)。

雙湖網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
2、mutable關(guān)鍵字

在這里插入圖片描述

3、常對(duì)象

常對(duì)象不可以修改成員屬性,且常對(duì)象只能調(diào)用常函數(shù)(聯(lián)想到靜態(tài)成員函數(shù)只能訪問(wèn)靜態(tài)成員屬性)
在這里插入圖片描述

3、總結(jié)

在這里插入圖片描述

二、友元

在這里插入圖片描述

一)、全局函數(shù)做友元

1、方法:在類(lèi)中聲明類(lèi)外的全局函數(shù)是類(lèi)的好朋友,在聲明的前面加上friend。這樣全局函數(shù)就可以訪問(wèn)類(lèi)中私有成員屬性
在這里插入圖片描述

二)、類(lèi)做友元

1、方法:在類(lèi)中聲明另一個(gè)類(lèi)為友元,前面加friend修飾。
2、注意:類(lèi)中的成員函數(shù)可以在類(lèi)外實(shí)現(xiàn),但是要在類(lèi)中聲明,在類(lèi)外加類(lèi)的作用域限制:building::building()

#includeusing namespace std;
#includeclass building
{friend class goodgay;
public:
	string m_sitting_room;
	building();
private:
	string m_bed_room;
};
class goodgay
{public:
	void visit(building& b)
	{cout<< "好基友正在訪問(wèn)"<< b.m_sitting_room<< endl;
		cout<< "好基友正在訪問(wèn)"<< b.m_bed_room<< endl;
	}
};
building::building()
{m_sitting_room = "客廳";
	m_bed_room = "臥室";
}
void test()
{building b1;
	goodgay g;
	g.visit(b1);
}
int main()
{test();
	system("pause");
	return 0;
}

在一個(gè)類(lèi)中調(diào)用另一個(gè)類(lèi)的成員方法
(1)類(lèi)引用作為形參

class goodgay
{public:
	void visit(building& b)
	{cout<< "好基友正在訪問(wèn)"<< b.m_sitting_room<< endl;
		cout<< "好基友正在訪問(wèn)"<< b.m_bed_room<< endl;
	}
};

(2)類(lèi)作為另一個(gè)類(lèi)的成員

#includeusing namespace std;
#includeclass goodgay;
class building
{friend goodgay;
public:
	string m_sitting_room;
	building();
private:
	string m_bed_room;
};
class goodgay
{public:
	building * b;
	goodgay();//構(gòu)造函數(shù)初始化成員屬性
	void visit();

};
building::building()
{m_sitting_room = "客廳";
	m_bed_room = "臥室";
}
goodgay::goodgay()
{b = new(building);
}
void goodgay::visit()
{cout<< "好基友正在訪問(wèn)"<< b->m_sitting_room<< endl;
	cout<< "好基友正在訪問(wèn)"<< b->m_bed_room<< endl;
}
void test()
{//building b;在創(chuàng)建g時(shí)就會(huì)調(diào)用構(gòu)造函數(shù)創(chuàng)建b
	goodgay g;
	g.visit();
}
int main()
{test();
	system("pause");
	return 0;
}
三)、成員函數(shù)做友元

在這里插入圖片描述

三、運(yùn)算符重載 一)、概念

對(duì)已有的運(yùn)算符重新定義,賦予其它的功能。(對(duì)于內(nèi)置的數(shù)據(jù)類(lèi)型,編譯器知道如何進(jìn)行運(yùn)算。)

1、加法運(yùn)算符重載

在這里插入圖片描述
operator +(對(duì)于加法重載的統(tǒng)一名稱)
(1)通過(guò)成員函數(shù)進(jìn)行加法
(2)通過(guò)全局函數(shù)進(jìn)行加法
在這里插入圖片描述

person operator+(person& b)
	{person temp;
		temp.m_a = this->m_a + b.m_a;
		temp.m_b = this->m_b + b.m_b;
		return temp;
	}

本質(zhì)調(diào)用:person p3=p1.operator+(p2);

#includeusing namespace std;
//加號(hào)運(yùn)算符重載
//1、成員函數(shù)實(shí)現(xiàn)加法運(yùn)算符重載
//2、全局函數(shù)實(shí)現(xiàn)加法運(yùn)算符重載

class person
{public:
	int m_a;
	int m_b;
	
};
//2
person operator+(person& a, person& b)
{person temp;
	temp.m_a = a.m_a + b.m_a;
	temp.m_b = a.m_b + b.m_b;
	return temp;
}
void test()
{person p1;
	p1.m_a = 20;
	p1.m_b = 30;
	person p2;
	p2.m_a = 10;
	p2.m_b = 20;
	person p3 = p1 + p2;
	cout<< p3.m_a<< endl;
	cout<< p3.m_b<< endl;
}

int main()
{test();
	system("pause");
	return 0;
}
2、運(yùn)算符重載也可以發(fā)生函數(shù)重載

在這里插入圖片描述

3、左移運(yùn)算符重載(<<)

在這里插入圖片描述
out屬于ostream類(lèi)型,ostream對(duì)象有且只能有一個(gè),所以重載時(shí)需要用引用;
由于cout只能在運(yùn)算符左側(cè),所以只能用全局函數(shù)進(jìn)行運(yùn)算符重載;
想要鏈?zhǔn)捷敵觯瑒t需要返回ostream的引用。
左移運(yùn)算符配合友元可以輸出自定義運(yùn)算符。

4、遞增運(yùn)算符重載

回憶自定義遞增
在這里插入圖片描述
前置遞增

#includeusing namespace std;
//前置遞增重載
//后置遞增重載

class number
{friend ostream& operator<<(ostream& cout, number& n1);
private:
	int m_a;
public:
	number(int a);
	number& operator++()
	{++m_a;
		return *this;
	}
};
number::number(int a)
{m_a = a;
}
ostream& operator<<(ostream& cout, number& n1)
{cout<< n1.m_a<< endl;
	return cout;
}
int main()
{number n1(10);
	cout<< ++(++n1)<< endl;
	system("pause");
	return 0;
}

前置遞增運(yùn)算符重載,返回的是引用。為了一直對(duì)一個(gè)數(shù)據(jù)進(jìn)行遞增,如果返回的是值,那么返回的不是本體,而是他的復(fù)制。
后置遞增

#includeusing namespace std;
//前置遞增重載
//后置遞增重載

class number
{friend ostream& operator<<(ostream& cout, number& n1);
	int m_a;
public:
	number(int a)
	{m_a = a;
	}
	number& operator++()
	{++m_a;
		return *this;
	}
	number& operator++(int)//int為占位符,將后置和前置遞增區(qū)分開(kāi)來(lái)
	{number temp = *this;
		m_a++;
		return temp;
	}
};

ostream& operator<<(ostream& cout, number& n1)
{cout<< n1.m_a<< endl;
	return cout;
}
int main()
{number n1(10);
	cout<< n1++<< endl;
	cout<< n1<< endl;
	system("pause");
	return 0;
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前文章:C++學(xué)習(xí)第十九天:類(lèi)與對(duì)象:const修飾成員函數(shù),友元,運(yùn)算符重載-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://jinyejixie.com/article18/dedpgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站網(wǎng)站策劃、企業(yè)網(wǎng)站制作自適應(yīng)網(wǎng)站移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
梁山县| 乡宁县| 苏尼特左旗| 泸溪县| 宝清县| 金寨县| 闸北区| 疏勒县| 石阡县| 左贡县| 石门县| 鹰潭市| 西青区| 申扎县| 沂南县| 竹北市| 项城市| 乌苏市| 河南省| 错那县| 蒙阴县| 沅江市| 尼玛县| 富川| 贵溪市| 治多县| 青冈县| 大关县| 天水市| 南皮县| 密山市| 乐清市| 南安市| 柳河县| 扶余县| 南投市| 乐山市| 永嘉县| 甘德县| 沂水县| 靖州|