您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)c++中static關(guān)鍵字的應(yīng)用,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、靜態(tài)變量
與C語言一樣,可以使用static說明自動(dòng)變量。根據(jù)定義的位置不同,分為靜態(tài)全局變量和靜態(tài)局部變量。
#include<iostream> using namespace std; //全局靜態(tài)變量 static int glos_s=10; //全局變量 int glos_a=10; void f(){ int a=1; //局部變量a static int fs=1; //靜態(tài)局部變量fs,完成初始化。 a+=2; fs+=2; glos_s+=10; glos_a+=10; cout<<"在f中:局部變量a="<<a<<" 靜態(tài)局部變量fs="<<fs<<" 全局變量glos_a="<<glos_a<< " 全局靜態(tài)變量glos_s=" << glos_s <<endl; } int main(){ f(); //在f中:局部變量a=3 靜態(tài)局部變量fs=3 全局變量glos_a=20 全局靜態(tài)變量glos_s=20 f(); //在f中:局部變量a=3 靜態(tài)局部變量fs=5 全局變量glos_a=30 全局靜態(tài)變量glos_s=30 return 0; }
二、類中的static
1、定義類的靜態(tài)成員
類的靜態(tài)成員有兩種:靜態(tài)成員變量和靜態(tài)成員函數(shù)。在類體內(nèi)定義類的成員時(shí),
在前面添加static關(guān)鍵字后,該成員即成為靜態(tài)成員。
2、類靜態(tài)成員的使用
訪問靜態(tài)成員時(shí),成員前面既可以用類名作前綴,也可以使用對(duì)象名或?qū)ο笾羔樧髑熬Y。這與訪問類成員時(shí)僅能使用對(duì)象名或?qū)ο笾羔樧髑熬Y是不同的。訪問類靜態(tài)成員的一般格式如下:
類的靜態(tài)成員函數(shù)沒有this指針,不能在靜態(tài)成員函數(shù)內(nèi)訪問非靜態(tài)的成員,即通常情況下,類的靜態(tài)成員函數(shù)只能處理類的靜態(tài)成員變量。靜態(tài)成員函數(shù)內(nèi)也不能調(diào)用非靜態(tài)成員函數(shù)。
#include<iostream> using namespace std; class Student{ public: int id; string name; static int money; static void printlnMoney(Student &stu); }; //靜態(tài)成員必須在類體外初始化,并且不能在類體內(nèi)賦值 int Student::money=10000; //靜態(tài)成員函數(shù)的實(shí)現(xiàn) void Student::printlnMoney(Student &stu){ cout << "name:" << stu.name <<" money:" << stu.money << endl; } int main(){ Student stu; stu.id=1; stu.name="小米"; //使用對(duì)象調(diào)用靜態(tài)成員 stu.printlnMoney(stu);//name:小米 money:10000 Student *stu2=new Student(); stu2->id=1; stu2->name="美團(tuán)"; //使用指針調(diào)用靜態(tài)成員 stu2->printlnMoney(*stu2);//name:美團(tuán) money:10000 //使用類名調(diào)用靜態(tài)成員 Student::money=50000; Student::printlnMoney(*stu2);//name:美團(tuán) money:50000 Student::printlnMoney(stu);//name:小米 money:50000 return 0; }
3、普通成員與靜態(tài)成員
對(duì)于普通成員變量,每個(gè)對(duì)象有各自的一份,而靜態(tài)成員變量只有一份,被同類所有對(duì)象共享。普通成員函數(shù)一定是作用在某個(gè)對(duì)象上的,而靜態(tài)成員函數(shù)并不具體作用在某個(gè)對(duì)象上。
訪問普通成員時(shí),要通過“對(duì)象名.成員名”等方式,指明要訪問的成員變量是屬于哪個(gè)對(duì)象的,或要調(diào)用的成員函數(shù)作用于哪個(gè)對(duì)象;
訪問靜態(tài)成員時(shí),則可以通過“類名::成員名”的方式訪問,不需要指明被訪問的成員屬于哪個(gè)對(duì)象或作用于哪個(gè)對(duì)象。
因此,甚至可以在還沒有任何對(duì)象生成時(shí)就訪問一個(gè)類的靜態(tài)成員。非靜態(tài)成員的訪問方式其實(shí)也適用于靜態(tài)成員,也就是可以通過“對(duì)象名.成員名”的方式訪問,效果和“類名::成員名”這種訪問方式?jīng)]有區(qū)別
在通常情況下,除一種情況外,類的成員函數(shù)之間是允許互相調(diào)用的。具體來說,靜態(tài)函數(shù)與靜態(tài)函數(shù)之間、非靜態(tài)函數(shù)與非靜態(tài)函數(shù)之間是可以相互調(diào)用的,非靜態(tài)成員函數(shù)內(nèi)可以調(diào)用靜態(tài)成員函數(shù),但靜態(tài)成員函數(shù)內(nèi)不能調(diào)用非靜態(tài)成員函數(shù)
以上就是c++中static關(guān)鍵字的應(yīng)用,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。