欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

c++基礎(chǔ)-類與對(duì)象2-創(chuàng)新互聯(lián)

類與對(duì)象
  • 4.2 對(duì)象的初始化和清理
    • 4.2.1 構(gòu)造函數(shù)和析構(gòu)函數(shù)
    • 4.2.2 構(gòu)造函數(shù)的分類及調(diào)用
      • 兩種分類方式:
      • 三種調(diào)用方式:
    • 4.2.3 拷貝構(gòu)造函數(shù)調(diào)用時(shí)機(jī)
    • 4.2.4 構(gòu)造函數(shù)調(diào)用規(guī)則
    • 4.2.5 深拷貝與淺拷貝
    • 4.2.6 初始化列表
    • 4.2.7 類對(duì)象作為類成員
    • 4.2.8靜態(tài)成員
      • 靜態(tài)成員變量
      • 靜態(tài)成員函數(shù)

c++面向?qū)ο蟮娜筇匦詾椋悍庋b、繼承、多態(tài)
c++認(rèn)為萬(wàn)事萬(wàn)物皆為對(duì)象,對(duì)象上有其屬性和行為

為通許等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及通許網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、通許網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!4.2 對(duì)象的初始化和清理 4.2.1 構(gòu)造函數(shù)和析構(gòu)函數(shù)

對(duì)象的初始化和清理也是兩個(gè)非常重要的安全問題
一個(gè)對(duì)象或者變量沒有初始狀態(tài),對(duì)其使用后果是未知
同樣的使用完一個(gè)對(duì)象或變量,沒有及時(shí)清理,也會(huì)造成一定的安全問題
c++利用了構(gòu)造函數(shù)和析構(gòu)函數(shù)解決上述問題,這兩個(gè)函數(shù)將會(huì)被編譯器自動(dòng)調(diào)用,完成對(duì)象初始化和清理工作。對(duì)象的初始化和清理工作是編譯器強(qiáng)制要我們做的事情,因此如果我們不提供構(gòu)造和西溝,編譯器會(huì)提供。編譯器提供的構(gòu)造函數(shù)和析構(gòu)函數(shù)是空實(shí)現(xiàn)

  • 構(gòu)造函數(shù): 主要作用在于創(chuàng)建對(duì)象時(shí)為對(duì)象的成員屬性賦值,構(gòu)造函數(shù)有編譯器自動(dòng)調(diào)用,無需手動(dòng)調(diào)用。
  • 析構(gòu)函數(shù): 主要作用在于對(duì)象銷毀前系統(tǒng)自動(dòng)調(diào)用,執(zhí)行一些清理工作。

構(gòu)造函數(shù)語(yǔ)法:類名(){}
(需在public作用域調(diào)用)

  1. 構(gòu)造函數(shù),沒有返回值也不寫void
  2. 函數(shù)名稱與類名相同
  3. 構(gòu)造函數(shù)可以有參數(shù),因此可以發(fā)生重載
  4. 程序在調(diào)用對(duì)象時(shí)候會(huì)自動(dòng)調(diào)用構(gòu)造,無需手動(dòng)調(diào)用,而且只會(huì)調(diào)用一次

析構(gòu)函數(shù)語(yǔ)法:~類名(){}

  1. 析構(gòu)函數(shù),沒有返回值也不寫void
  2. 函數(shù)名稱與類名相同,在名稱前加上符號(hào)~
  3. 構(gòu)造函數(shù)不可以有參數(shù),因此不可以發(fā)生重載
  4. 程序在對(duì)象銷毀前會(huì)自動(dòng)調(diào)用析構(gòu),無需手動(dòng)調(diào)用,而且只會(huì)調(diào)用一次
#includeusing namespace std;
//對(duì)象的初始化和清理
//1、構(gòu)造函數(shù) 進(jìn)行初始化操作
class Person{public:
	Person(){cout<<"Person構(gòu)造函數(shù)的調(diào)用"<cout<<"Person析構(gòu)函數(shù)的調(diào)用"<Person p1;//棧上的數(shù)據(jù),自動(dòng)釋放
}
int main(){test01();
	cout<<"~~~~~~分隔符~~~~~~"<
4.2.2 構(gòu)造函數(shù)的分類及調(diào)用 兩種分類方式:
  • 按參數(shù)分類:有參構(gòu)造和無參構(gòu)造
  • 按類型分類:普通構(gòu)造和拷貝構(gòu)造
class Person{public:
	//普通構(gòu)造函數(shù)
	Person(){//無參構(gòu)造(編譯器默認(rèn)構(gòu)造)
		cout<<"Person的無參構(gòu)造函數(shù)調(diào)用"<//有參構(gòu)造
	age=a;
		cout<<"Person的有參構(gòu)造函數(shù)調(diào)用"<//將傳入的人身上所有的屬性,拷貝到我身上
		age=p.age;
		cout<<"Person的拷貝構(gòu)造函數(shù)調(diào)用"<
三種調(diào)用方式:
  • 括號(hào)法(注:調(diào)用無參構(gòu)造函數(shù)時(shí)不要加())
Person p1;//無參構(gòu)造
	Person p2(10);//有參構(gòu)造
	Person p3(p1);//拷貝構(gòu)造
	Person p4(p2);//拷貝構(gòu)造
	cout<<"p2的年齡:"<
  • 顯示法
Person p1;
	Person p2=Person(10);//有參構(gòu)造
	Person p3=Person(p2);//拷貝構(gòu)造
	Person(10);//稱為匿名對(duì)象 特點(diǎn):當(dāng)前行執(zhí)行結(jié)束后,系統(tǒng)會(huì)立即回收掉匿名對(duì)象
  	Person(p3);//注意:不要利用拷貝構(gòu)造函數(shù)初始化匿名對(duì)象
  	//編譯器認(rèn)為Person(p3)==Person p3;	重定義
  • 隱式轉(zhuǎn)換法
Person p1=10;//相當(dāng)于Person p1=Person(10);
	Person p2=p1;//拷貝構(gòu)造
4.2.3 拷貝構(gòu)造函數(shù)調(diào)用時(shí)機(jī)

c++中拷貝構(gòu)造函數(shù)調(diào)用時(shí)機(jī)通常有三種情況

  • 使用一個(gè)已經(jīng)創(chuàng)建完畢的對(duì)象來初始化一個(gè)新對(duì)象
void test1(){Person p1(20);
	Person p2(p1);
	cout<<"p2的年齡:"<
  • 值傳遞的方式給函數(shù)參數(shù)傳值
void test2_1(Person p){}
void test2(){Person p;
	test2_1(p);
}
  • 以值方式返回局部對(duì)象
Person test3_1(){Person p1;
	cout<<(int*)&p1<Person p=test3_1();
	cout<<(int*)&p<
4.2.4 構(gòu)造函數(shù)調(diào)用規(guī)則

默認(rèn)情況下,c++編譯器至少給一個(gè)類添加3個(gè)函數(shù)

  1. 默認(rèn)構(gòu)造函數(shù)(無參,函數(shù)體為空)
  2. 默認(rèn)析構(gòu)函數(shù)(無參,函數(shù)體為空)
  3. 默認(rèn)拷貝函數(shù),對(duì)屬性進(jìn)行值拷貝

構(gòu)造函數(shù)調(diào)用規(guī)則:

  • 如果用戶定義有參構(gòu)造函數(shù),c++不再提供默認(rèn)無參構(gòu)造,但會(huì)提供默認(rèn)拷貝構(gòu)造
  • 如果用戶定義拷貝構(gòu)造函數(shù),c++不再提其他構(gòu)造函數(shù)
int main(){Person p;
	p.a=18;
	Person p2(p);
	cout<<"p2的年齡:"<
//三個(gè)函數(shù)均自定義
//若注釋掉無參構(gòu)造,保留有參構(gòu)造,則運(yùn)行Person p,顯示沒有合適的構(gòu)造函數(shù)可用
//若只保留自定義拷貝構(gòu)造,則有參無參構(gòu)造函數(shù)均無
class Person{public:
	int a;
	Person(){cout<<"無參構(gòu)造函數(shù)調(diào)用"<a=age;
		cout<<"有參構(gòu)造函數(shù)調(diào)用"<cout<<"拷貝構(gòu)造函數(shù)調(diào)用"<cout<<"析構(gòu)函數(shù)調(diào)用"<
4.2.5 深拷貝與淺拷貝

淺拷貝:簡(jiǎn)單的賦值拷貝操作(淺拷貝帶來的問題是堆區(qū)重復(fù)釋放)
深拷貝:在堆區(qū)重新申請(qǐng)空間,進(jìn)行拷貝操作

淺拷貝時(shí)完全值復(fù)制,存在兩個(gè)相同地址,會(huì)通過析構(gòu)函數(shù)釋放兩次,第二次為非法操作
淺拷貝

#includeusing namespace std;
class Person{public:
	Person(int age,int height){m_Age=age;
		m_Height=new int(height);
		cout<<"有參構(gòu)造函數(shù)調(diào)用"<cout<<"拷貝構(gòu)造函數(shù)的調(diào)用"<if(m_Height!=NULL){	delete m_Height;
			m_Height=NULL;
		}
		cout<<"析構(gòu)函數(shù)調(diào)用"<Person p1(18,160);
	cout<<"p1的年齡為"<
4.2.6 初始化列表

作用: c++提供了初始化列表語(yǔ)法,用來初始化屬性
語(yǔ)法:構(gòu)造函數(shù)():屬性1(值1),屬性2(值2)...{}

#includeusing namespace std;
class Person{public:
		int m_A;
		int m_B;
		int m_C;
		//傳統(tǒng)初始化操作
//			m_A=a;
//					m_B=b;
//					m_C=c;
//				}Person(int a,int b,int c){//初始化列表初始化屬性
		Person(int a,int b,int c):m_A(a),m_B(b),m_C(c){}
};
int main(){Person p(10,20,30);
	cout<<"m_A="<	cout<<"Phone的析構(gòu)"<public:
		Person(string name,string pName):m_Name(name),m_Phone(pName){	cout<<"Person的構(gòu)造"<	cout<<"Person的析構(gòu)"<Person p("張三","蘋果max");
	cout<
4.2.8靜態(tài)成員

靜態(tài)成員就是在成員變量和成員函數(shù)前加上關(guān)鍵詞static,成為靜態(tài)成員
靜態(tài)成員分為:

靜態(tài)成員變量
  • 所有對(duì)象共享同一份數(shù)據(jù)
  • 在編譯階段分配內(nèi)存
  • 類內(nèi)聲明,類外初始化

1、類內(nèi)聲明,類外初始化
2、靜態(tài)成員變量有訪問權(quán)限

class Person{public:
		static int m_A;
	private:
		static int m_B;//私有 類外不可訪問
};
int Person::m_A=100;

3、靜態(tài)成員變量 不屬于某個(gè)對(duì)象上,所有對(duì)象都共享一份數(shù)據(jù)

void test1(){Person p;
	cout<

4、靜態(tài)成員變量的兩種訪問方式
1、通過對(duì)象進(jìn)行訪問
2、通過類名進(jìn)行訪問

void test2(){Person p;
	//通過對(duì)象進(jìn)行訪問
	cout<
靜態(tài)成員函數(shù)
  • 所有對(duì)象共享同一個(gè)函數(shù)
  • 靜態(tài)成員函數(shù)只能訪問靜態(tài)成員變量

1、靜態(tài)成員函數(shù)有訪問權(quán)限
2、靜態(tài)成員函數(shù)只能訪問靜態(tài)成員變量

class Person{public:
	static void func(){m_A=100;    //靜態(tài)成員函數(shù)可以訪問靜態(tài)成員變量
//		m_B=200;	//靜態(tài)成員函數(shù)不可以訪問非靜態(tài)成員變量
		cout<<"static void func調(diào)用"<//類外不可訪問私有靜態(tài)成員函數(shù)
		cout<<"static void func2調(diào)用"<

3、兩種訪問方式

void test1(){//通過對(duì)象訪問
	Person p;
	p.func();
	//通過類名訪問
	Person::func();
}

你是否還在尋找穩(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)查看詳情吧

文章標(biāo)題:c++基礎(chǔ)-類與對(duì)象2-創(chuàng)新互聯(lián)
分享鏈接:http://aaarwkj.com/article48/pgjhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站營(yíng)銷、全網(wǎng)營(yíng)銷推廣、商城網(wǎng)站、企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

国产三级久久精品三级91| 中文字幕乱码亚洲影视| 亚洲综合福利视频网站| 国产超码片内射在线| 国产亚洲精品热视频在线观看| 亚洲福利区一区二区三区| 国产综合精品一区二区| 国产精品一区二区av麻豆| 搡老熟女老女人一区二区| 日本精品视频一区二区三区| av电影国产在线观看| 国产91精品成人在线观看| 亚洲国产成人精品女人| 偷拍大神女厕偷拍作品| 亚洲欧美成人高清在线观看| 日韩一级精品电影网| 国产免费看黄色的网站| 人妻一区日韩二区国产| 国产自拍最新在线视频| 国产精品粗又长一区| 99久久精品国产国产毛片| 伊人蕉影院久亚洲高清| 欧美日韩精品一区二区三| 日韩av毛片在线观看| 国产原创av剧情六区| 蜜臀人妻四季av一区二区不卡| 一本色桃子精品久久中文字幕| 国产成人精品一区二区国产乱码| 欧美影院波波在线影院| 亚洲男人天堂免费观看| 超碰国产精品一区二区| 亚洲成av人的天堂在线观看女人| 亚洲中文无码亚洲人vr在线 | 色婷婷综合中文久久一本| 亚洲成av人的天堂在线观看女人| 在线不卡日本v二区| 成人av资源在线观看| 97在线观看视频免费| 国产精品久久久毛片av| 在线观看日韩三级av| 尹人大香蕉在线视频|