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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

关于c++静态类的说法

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

關(guān)于C++的靜態(tài)類和C#中的靜態(tài)類的比較

在C++中,類不能有static修飾,

**C++靜態(tài)類是指只用于包含靜態(tài)成員的類型,不能進(jìn)行實(shí)例化。**當(dāng)我們聲明類的成員為靜態(tài)時(shí),這意味著無論創(chuàng)建多少個(gè)類的對(duì)象,靜態(tài)成員都只有一個(gè)副本。靜態(tài)成員在類的所有對(duì)象中是共享的。

我們不能把靜態(tài)成員的初始化放置在類的定義中,但是可以在類的外部通過使用范圍解析運(yùn)算符 :: 來重新聲明靜態(tài)變量從而對(duì)它進(jìn)行初始化。

靜態(tài)函數(shù)只要使用類名加范圍解析運(yùn)算符 :: 就可以訪問。

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

靜態(tài)成員函數(shù)有一個(gè)類范圍,他們不能訪問類的 this 指針。

靜態(tài)成員函數(shù)與普通成員函數(shù)的區(qū)別:- 靜態(tài)成員函數(shù)沒有 this 指針,只能訪問靜態(tài)成員(包括靜態(tài)成員變量和靜態(tài)成員函數(shù))。- 普通成員函數(shù)有 this 指針,可以訪問類中的任意成員;而靜態(tài)成員函數(shù)沒有 this 指針。

而C#中:
靜態(tài)類是有static修飾的,

僅包含靜態(tài)成員,無法實(shí)例化,也就不能包含實(shí)例構(gòu)造函數(shù)。但是可以聲明靜態(tài)構(gòu)造函數(shù)分配初始值或設(shè)置某個(gè)靜態(tài)狀態(tài)。

那為什么靜態(tài)類沒有必要存在C++中呢?

一個(gè)類是對(duì)一個(gè)概念的描述,類的本質(zhì)是它維護(hù)了一個(gè)不變式,也就是說它有一個(gè)狀態(tài),它所有的接口都是為了訪問或者獲取這個(gè)狀態(tài)以及跟狀態(tài)相關(guān)的操作。一個(gè)靜態(tài)類沒有狀態(tài),因此就沒有必要成為一個(gè)類。

C++由于具有傳值、傳址、啞元功能,使用靜態(tài)類不僅多余而且也完全沒有必要,相反,對(duì)Java、C#之類“改進(jìn)型語言”來說,由于為避免指針,防止過多的產(chǎn)生對(duì)象實(shí)例,就必須額外的引入一些新的“先進(jìn)性”的東西,比如靜態(tài)類。然而,靜態(tài)類本身是一個(gè)半成品(或是終極產(chǎn)品),由于其無法繼承,靜態(tài)類的產(chǎn)品化會(huì)因?yàn)椴槐闵?jí)而成為一種垃圾。

在《C#編程指南》中:
靜態(tài)類和類成員用于創(chuàng)建無需創(chuàng)建類的實(shí)例就能夠訪問的數(shù)據(jù)和函數(shù)。靜態(tài)類成員可用于分離獨(dú)立于任何對(duì)象標(biāo)識(shí)的數(shù)據(jù)和行為:無論對(duì)象發(fā)生什么更改,這些數(shù)據(jù)和函數(shù)都不會(huì)隨之變化。
當(dāng)類中沒有依賴對(duì)象標(biāo)識(shí)的數(shù)據(jù)或行為時(shí),就可以使用靜態(tài)類。

有此可見:
C++與C#關(guān)于靜態(tài)類有區(qū)別。

C#中,可以指定一個(gè)靜態(tài)的類。而C++中可以在類中聲明靜態(tài)的成員的類型。 當(dāng)一個(gè)類權(quán)卻脫離實(shí)例數(shù)據(jù)和對(duì)象時(shí)可以使用靜態(tài)類(C++中靜態(tài)的成員類型),對(duì)靜態(tài)成員變量智能是程序運(yùn)行時(shí)初始化,不能在類內(nèi)初始化。靜態(tài)類不需要,也沒有基類。

例如,在C++編程中,需要用到一個(gè)公共的數(shù)據(jù),可以單獨(dú)聲明一個(gè)類,

class ShareData { public:static QList<QByteArray> list;static QList<QString> listTest;static QList<tagPosInfo_t> webTagInfoSendlist;static uint16_t onlineAncNum;static uint16_t totalAncNUm;};

在,類的外部初始化該靜態(tài)數(shù)據(jù):

//定義全局變量 QList<QByteArray> ShareData::list = QList<QByteArray>();QList<QString> ShareData::listTest = QList<QString>();QList<tagPosInfo_t> ShareData::webTagInfoSendlist = QList<tagPosInfo_t>();uint16_t ShareData:: onlineAncNum = 0; uint16_t ShareData:: totalAncNUm = 0;

總結(jié)

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

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