深夜美女视频一区二区_91sao在线看片水片_亚洲日韩国语_精品中文字幕久久边人妻_高潮喷水香蕉视频色_白洁国产剧情Av手机在线_国产精品情侣呻吟_天空影院播放免费完整版视频_少妇高潮惨叫喷水在线观看_公交车大龟廷进我身体里

Hi,您好,歡迎來(lái)到西安盛圖軟件科技有限公司!

C++ |類(lèi)的靜態(tài)成員變量和函數(shù)

發(fā)布時(shí)間:2023-12-13 14:14:16

類(lèi)的成員函數(shù)是指那些把定義和原型寫(xiě)在類(lèi)定義內(nèi)部的函數(shù),就像類(lèi)定義中的其他變量一樣。類(lèi)成員函數(shù)是類(lèi)的一個(gè)成員,它可以操作類(lèi)的任意對(duì)象,可以訪問(wèn)對(duì)象中的所有成員。C++是面向?qū)ο蟮木幊陶Z(yǔ)言,對(duì)象就是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心。所謂對(duì)象就是真實(shí)世界中的實(shí)體,對(duì)象與實(shí)體是一一對(duì)應(yīng)的,也就是說(shuō)現(xiàn)實(shí)世界中每一個(gè)實(shí)體都是一個(gè)對(duì)象,它是一種具體的概念。本文主要介紹C++ 類(lèi)的靜態(tài)成員變量和函數(shù)。

1、靜態(tài)成員變量

使用static關(guān)鍵字來(lái)把類(lèi)成員變量定義為靜態(tài)的。當(dāng)我們聲明類(lèi)的成員為靜態(tài)時(shí),即使多個(gè)類(lèi)的對(duì)象,靜態(tài)成員都只有一個(gè)副本。

靜態(tài)成員變量在類(lèi)的所有對(duì)象中是共享的。如果不存在其他的初始化語(yǔ)句,在創(chuàng)建第一個(gè)對(duì)象時(shí),所有的靜態(tài)數(shù)據(jù)都會(huì)被初始化為零。我們不能把靜態(tài)成員的初始化放置在類(lèi)的定義中,但是可以在類(lèi)的外部通過(guò)使用范圍解析運(yùn)算符 :: 來(lái)重新聲明靜態(tài)變量從而對(duì)它進(jìn)行初始化。

例如,

#include <iostream>
using namespace std;
class Area
{

  public:
     static int objectCount;
     // 構(gòu)造函數(shù)定義
     Area(double l=2.0, double b=2.0, double h=2.0)
     {
        cout <<"Constructor called." << endl;
        length = l;
        breadth = b;
        height = h;
        // 每次創(chuàng)建對(duì)象時(shí)增加 1
        objectCount++;
     }
     double Volume()
     
{
        return length * breadth * height;
     }
  private:
     double length;     // 長(zhǎng)度
     double breadth;    // 寬度
     double height;     // 高度
};
// 初始化類(lèi) Area 的靜態(tài)成員
int Area::objectCount = 0;
int main(void)
{
  Area Area1(3.3, 1.2, 1.5);    // 聲明 Area1
  Area Area2(8.5, 6.0, 2.0);    // 聲明 Area2
  // 輸出對(duì)象的總數(shù)
  cout << "Total objects: " << Area::objectCount << endl;
  return 0;
}


2、靜態(tài)成員函數(shù)

當(dāng)類(lèi)成員函數(shù)聲明為靜態(tài)的,函數(shù)與類(lèi)的任何特定對(duì)象相對(duì)獨(dú)立。靜態(tài)成員函數(shù)即使在類(lèi)對(duì)象不存在的情況下也能被調(diào)用,靜態(tài)函數(shù)只要使用類(lèi)名加范圍解析運(yùn)算符 :: 就可以訪問(wèn)。

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

例如,


#include <iostream>
#include <string>
using namespace std;
class test
{

private:
   static int m_value;//定義私有類(lèi)的靜態(tài)成員變量
public:
   test()
   {
   m_value++;
   }
   static int getValue()//定義類(lèi)的靜態(tài)成員函數(shù)
   
{
   return m_value;
   }
};
int test::m_value = 0;//類(lèi)的靜態(tài)成員變量需要在類(lèi)外分配內(nèi)存空間
int main()
{
   test t1;
   test t2;
   test t3;
   cout << "test::m_value2 = " << test::getValue() << endl;//通過(guò)類(lèi)名直接調(diào)用公有靜態(tài)成員函數(shù),獲取對(duì)象個(gè)數(shù)
   cout << "t3.getValue() = " << t3.getValue() << endl;//通過(guò)對(duì)象名調(diào)用靜態(tài)成員函數(shù)獲取對(duì)象個(gè)數(shù)
}


3、靜態(tài)成員函數(shù)與普通成員函數(shù)的區(qū)別

1)靜態(tài)成員函數(shù)沒(méi)有 this 指針,只能訪問(wèn)靜態(tài)成員(包括靜態(tài)成員變量和靜態(tài)成員函數(shù))。

2)普通成員函數(shù)有 this 指針,可以訪問(wèn)類(lèi)中的任意成員;而靜態(tài)成員函數(shù)沒(méi)有 this 指針。


以上為本次所有分享內(nèi)容

addffbe8602b57d798f22949b3de8ce.png

上一篇:C++基礎(chǔ)|C++ 構(gòu)造函數(shù)
下一篇:C++ 析構(gòu)函數(shù)

歡迎登錄盛圖科技

歡迎注冊(cè)盛圖科技

已有賬號(hào),立即登錄