<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
即在定義前面加上static
關鍵字的成員。
#include<iostream> using namespace std; class A{ public: A(int a, int b): m_a(a), m_b(b){ num += m_a + m_b; } ~A(){} void Fun(); // 不同成員函數 static void PrintNum(){ // 靜態成員函數 //在靜態成員函數中,不能存取非靜態成員變數 //也不能呼叫非靜態成員函數 std::cout << num << std::endl; } private: int m_a; //普通成員變數 int m_b;//普通成員變數 static int num; //靜態成員變數 }; //靜態成員必須在定義類的檔案中對靜態成員變數進行初始化 //否則會編譯出錯 int A::num = 0; int main(){ A a1(1, 1); //存取靜態函數 A::PrintNum(); A a2(1, 1); //存取靜態函數 A::PrintNum(); system("pause"); return 0; }
普通成員變數每個物件有各自的一份,而靜態成員變數一共就一份,為所有物件共用。
sizeof
運運算元不會計算靜態成員變數的大小,如下的sizeof(CTest)
為4:
class CTest { int n; static int s; };
普通成員函數必須具體作用於某個物件,而靜態成員函數並不具體作用於某個物件。
因此靜態成員變數和靜態成員函數不需要通過物件就能存取,因為他是共用的。
//類名::成員名 A::PrintNum(); //物件名.成員名 A a; a.PrintNum(); //指標->成員名 A *p = new A(); p->PrintNum(); //參照.成員名 A a; A & ref = a; ref.PrintNum();
關於上面的最後一點,也是面試常考的:
在C++中,類的靜態成員(static member)必須在類內宣告,在類外初始化。
靜態成員不能在類內初始化——因為靜態成員屬於整個類,而不屬於某個物件,如果在類內初始化,會導致每個物件都包含該靜態成員,這是矛盾的。
能在類中初始化的成員只有一種,那就是靜態常數成員。
錯誤1(靜態成員不能在類內初始化):
class A{ private: static int count = 0; // 靜態成員不能在類內初始化};
錯誤2(常數成員也不能在類內初始化):
class A{ private: const int count = 0; // 常數成員也不能在類內初始化};
正確(靜態常數成員可以在類內初始化):
class A{ private: static const int count = 0; // 靜態常數成員可以在類內初始化};
變數的初始化順序就應該是:
1 基礎類別的靜態變數或全域性變數
2 派生類的靜態變數或全域性變數
3 基礎類別的成員變數
4 派生類的成員變數
main
函數會被呼叫,如果某個類別建構函式被執行,那麼首先基礎類別的成員變數會被初始化。本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45