在上一篇文章中,我們討論了 C++ 中的靜態數據成員,我們討論了靜態數據成員可以通過成員函數訪問,但該函數應該是靜態成員函數
靜態成員函數是一種特殊的成員函數,它隻用於訪問靜態數據成員,不能通過靜態成員函數訪問任何其他普通數據成員。就像靜態數據成員一樣,靜態成員函數也是一個類函數;它不與任何類對象相關聯。
我們可以使用以下語法訪問具有類名的靜態成員函數:
class_name::function_name(perameter);
考慮這個例子:
#include <iostream>
using namespace std;
class Demo
{
private:
//static data members
static int X;
static int Y;
public:
//static member function
static void Print()
{
cout <<"Value of X:" << X << endl;
cout <<"Value of Y:" << Y << endl;
}
};
//static data members initializations
int Demo::X =10;
int Demo::Y =20;
int main()
{
Demo OB;
//accessing class name with object name
cout<<"Printing through object name:"<<endl;
OB.Print();
//accessing class name with class name
cout<<"Printing through class name:"<<endl;
Demo::Print();
return 0;
}
輸出
Printing through object name: Value of X:10 Value of Y:20 Printing through class name: Value of X:10 Value of Y:20
在上麵的程序中X
和Y
是兩個靜態數據成員和print()
是一個靜態成員函數。根據C++中的靜態規則,隻有靜態成員函數才能訪問靜態數據成員。非靜態數據成員永遠不能通過靜態成員函數訪問。
注意:內聯函數永遠不能是靜態的。
相關用法
- C++ Stack push()用法及代碼示例
- C++ Stack empty()用法及代碼示例
- C++ Stack size()用法及代碼示例
- C++ Stack emplace()用法及代碼示例
- C++ Stack pop()用法及代碼示例
- C++ String swap()用法及代碼示例
- C++ String back()用法及代碼示例
- C++ String append()用法及代碼示例
- C++ String Assign()用法及代碼示例
- C++ String begin()用法及代碼示例
- C++ String size()用法及代碼示例
- C++ String resize()用法及代碼示例
- C++ String Find()用法及代碼示例
- C++ String crend()用法及代碼示例
- C++ String compare()用法及代碼示例
- C++ String empty()用法及代碼示例
- C++ String replace()用法及代碼示例
- C++ String at()用法及代碼示例
- C++ String insert()用法及代碼示例
- C++ String clear()用法及代碼示例
注:本文由純淨天空篩選整理自 Static member function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。