真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用

這篇文章主要為大家展示了“C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用”這篇文章吧。

創(chuàng)新新互聯(lián),憑借十載的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)經(jīng)驗(yàn),本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有上千多家案例。做網(wǎng)站建設(shè),選成都創(chuàng)新互聯(lián)

靜態(tài)數(shù)據(jù)成員

·用關(guān)鍵字static聲明

·當(dāng)聲明類的數(shù)據(jù)成員為靜態(tài)時(shí),無論創(chuàng)建多少個(gè)類的對(duì)象,靜態(tài)成員都只有一個(gè)副本

·在類的所有對(duì)象中共享,具有靜態(tài)生存期

·若不存在其他的初始化語句,在創(chuàng)建第一個(gè)對(duì)象時(shí),所有的靜態(tài)數(shù)據(jù)成員被初始化為零

·在類外定義和初始化,用范圍解析運(yùn)算符(::)來指明所屬的類

舉例:

#include 
using namespace std;

class Box {
public:
	static int count;    //若該靜態(tài)數(shù)據(jù)成員在private部分聲明,則只能通過靜態(tài)成員函數(shù)處理
	Box(double l = 2.0, double b = 2.0, double h = 2.0) {
		cout << "One constructor was called." << endl;
		length = l, width = b, height = h;
		count++;	//每創(chuàng)建一個(gè)對(duì)象時(shí)加1
	}
	double Volume() {
		return length * width * height;
	}
	~Box() { count--; }
private:
	double length, width, height;
};
//初始化類Box的靜態(tài)成員
int Box::count = 0;

int main(void) {
	Box Box1(3.3, 1.2, 1.5);
	Box Box2(8.5, 6.0, 2.0);
	cout << "Total objects: " << Box::count << endl;	//輸出對(duì)象的總數(shù)
	return 0;
}

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

把成員函數(shù)聲明為靜態(tài)的,就可以把函數(shù)與類的任何特定對(duì)象獨(dú)立開來

·在類對(duì)象不存在的情況下也能被調(diào)用,使用類名加范圍解析運(yùn)算符 ::即可訪問

·靜態(tài)成員函數(shù)只能訪問靜態(tài)成員數(shù)據(jù)、其他靜態(tài)成員函數(shù)和類外部的其他函數(shù)

·靜態(tài)成員函數(shù)有一個(gè)類范圍,不能訪問類的 this 指針,可以使用靜態(tài)成員函數(shù)來判斷類的某些對(duì)象是否已被創(chuàng)建

·用靜態(tài)成員函數(shù)訪問非靜態(tài)成員,需通過對(duì)象

舉例:

#include 
using namespace std;

class Box {
public:
	static int count;
	Box(double l = 2.0, double b = 2.0, double h = 2.0) {
		cout <<"One constructor was called." << endl;
		length = l, width = b, height = h;
		count++;
	}
	double Volume() {
		return length * width * height;
	}
	static int getCount() {	//靜態(tài)成員函數(shù) 
		return count;
	}
private:
	double length, width, height;
};
int Box::count = 0;

int main(void) {
	//在創(chuàng)建對(duì)象之前輸出對(duì)象的總數(shù)
	cout << "Inital Stage Count: " << Box::getCount() << endl;
	
	Box Box1(3.3, 1.2, 1.5);
	Box Box2(8.5, 6.0, 2.0);
	
	//在創(chuàng)建對(duì)象之后輸出對(duì)象的總數(shù)
	cout << "Final Stage Count: " << Box::getCount() << endl;
	return 0;
}

注:

靜態(tài)成員函數(shù)與普通成員函數(shù)的區(qū)別:

·靜態(tài)成員函數(shù)沒有 this 指針,只能訪問靜態(tài)成員(包括靜態(tài)成員變量和靜態(tài)成員函數(shù))

·普通成員函數(shù)有 this 指針,可以訪問類中的任意成員;而靜態(tài)成員函數(shù)沒有 this 指針

使用靜態(tài)成員了解構(gòu)造與析構(gòu)函數(shù)的調(diào)用情況

#include 
using namespace std;

class A {
	friend class B;	//類B是類A的友元 
public:
	static int value;
	static int num;
	A(int x, int y) {
		xp = x, yp = y;
		value++;
		cout << "調(diào)用構(gòu)造:" << value << endl;
	}
	void displayA() {
		cout << xp << "," << yp << endl;
	}
	~A() {
		num++;
		cout << "調(diào)用析構(gòu):" << num << endl;
	}
private:
	int xp, yp;
};
class B {
public:
	B(int x1, int x2) : mpt1(x1 + 2, x2 - 2), mpt2(x1, x2) {
		cout << "調(diào)用構(gòu)造\n";	//mpt是類A的對(duì)象,有幾個(gè)mpt,有關(guān)類A的操作便執(zhí)行幾次 
	}
	void set(int m, int n);
	void displayB();
	~B() {
		cout << "調(diào)用析構(gòu)\n";	//析構(gòu)函數(shù)在類結(jié)束前調(diào)用,類結(jié)束的時(shí)候釋放類申請(qǐng)的空間
	} 
private:
	A mpt1, mpt2;		//將A類的對(duì)象聲明為B類的私有數(shù)據(jù)成員 
};

int A::value = 0;
int A::num = 0;
void B::set(int m, int n) {
	mpt1.xp = m * 2, mpt1.yp = n / 2;
}
void B::displayB() {
	mpt1.displayA();
}

int main() {
	B p(10, 20);
	cout << "Hello world!" << endl;
	B displayB();    //通過友元,使類B輸出類A的私有數(shù)據(jù)成員
	return 0;
}

以上是“C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


名稱欄目:C++類的靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)怎么用
本文鏈接:http://weahome.cn/article/gedgoo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部