日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ :静态函数的应用

發(fā)布時(shí)間:2025/3/20 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ :静态函数的应用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

非靜態(tài)成員引用必須與特定對(duì)象相對(duì)

數(shù)據(jù)成員可以分靜態(tài)變量、非靜態(tài)變量?jī)煞N.

**靜態(tài)成員:**靜態(tài)類中的成員加入static修飾符,即是靜態(tài)成員.可以直接使用類名+靜態(tài)成員名訪問此靜態(tài)成員,因?yàn)殪o態(tài)成員存在于內(nèi)存,非靜態(tài)成員需要實(shí)例化才會(huì)分配內(nèi)存,所以靜態(tài)成員不能訪問非靜態(tài)的成員…因?yàn)殪o態(tài)成員存在于內(nèi)存,所以非靜態(tài)成員可以直接訪問類中靜態(tài)的成員.

非成靜態(tài)員:所有沒有加Static的成員都是非靜態(tài)成員,當(dāng)類被實(shí)例化之后,可以通過實(shí)例化的類名進(jìn)行訪問..非靜態(tài)成員的生存期決定于該類的生存期…而靜態(tài)成員則不存在生存期的概念,因?yàn)殪o態(tài)成員始終駐留在內(nèi)容中…

eg:

#include<string> #include<iostream> using namespace std; class TextBlock { public:TextBlock():text("hello") {}const char& operator[](size_t position) const{ return text[position]; }char& operator[](size_t position){ return text[position]; }/* static */ void print(const TextBlock& tb){ cout << tb[0]; } private:string text; };int main() {TextBlock B;TextBlock::print(B);/* B.print(B); */system("pause"); }

在VS2013里輸入以上代碼會(huì)報(bào)錯(cuò):非靜態(tài)成員引用必須與特定對(duì)象相對(duì)。

類的成員有兩種:靜態(tài)成員和實(shí)例成員(包括實(shí)例和函數(shù))。實(shí)例成員的存儲(chǔ)空間屬于具體的實(shí)例,不同實(shí)例(對(duì)象)的同名成員擁有不同的存儲(chǔ)空間;靜態(tài)成員的存儲(chǔ)空間是固定的,與具體的實(shí)例(對(duì)象)無關(guān),被該類的所有實(shí)例共享。

訪問靜態(tài)成員可以用ClassName::MemberName,也可以用ClassName.MemberNme,但最好用前者,因?yàn)楹苋菀拙涂梢耘卸ǔ蓡T是靜態(tài)成員。

訪問實(shí)例成員只能用ClassName.MemberName,不能用ClassName::MemberName.

本例中就是因?yàn)橛肅lassName::MemberName訪問實(shí)例變量出錯(cuò)。

所以解決方法是:將以上類的成員函數(shù)print聲明為static。或者函數(shù)調(diào)用時(shí)用ClassName.MemberName的方式。

總結(jié)

以上是生活随笔為你收集整理的c++ :静态函数的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。