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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ :静态函数的应用

發布時間:2025/3/20 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ :静态函数的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

非靜態成員引用必須與特定對象相對

數據成員可以分靜態變量、非靜態變量兩種.

**靜態成員:**靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名+靜態成員名訪問此靜態成員,因為靜態成員存在于內存,非靜態成員需要實例化才會分配內存,所以靜態成員不能訪問非靜態的成員…因為靜態成員存在于內存,所以非靜態成員可以直接訪問類中靜態的成員.

非成靜態員:所有沒有加Static的成員都是非靜態成員,當類被實例化之后,可以通過實例化的類名進行訪問..非靜態成員的生存期決定于該類的生存期…而靜態成員則不存在生存期的概念,因為靜態成員始終駐留在內容中…

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里輸入以上代碼會報錯:非靜態成員引用必須與特定對象相對。

類的成員有兩種:靜態成員和實例成員(包括實例和函數)。實例成員的存儲空間屬于具體的實例,不同實例(對象)的同名成員擁有不同的存儲空間;靜態成員的存儲空間是固定的,與具體的實例(對象)無關,被該類的所有實例共享。

訪問靜態成員可以用ClassName::MemberName,也可以用ClassName.MemberNme,但最好用前者,因為很容易就可以判定成員是靜態成員。

訪問實例成員只能用ClassName.MemberName,不能用ClassName::MemberName.

本例中就是因為用ClassName::MemberName訪問實例變量出錯。

所以解決方法是:將以上類的成員函數print聲明為static?;蛘吆瘮嫡{用時用ClassName.MemberName的方式。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。