靜態函數:它是一個成員函數,僅用於訪問靜態數據成員。它不能訪問非靜態數據成員,甚至不能調用非靜態成員函數。即使該類的對象不存在,也可以調用它。它還用於在類的不同對象之間維護類成員函數的單個副本。
程序1:
C++
// C++ program to illustrate the use
// of static function
#include "bits/stdc++.h"
using namespace std;
class A {
public:
static void f()
{
cout << "GeeksforGeeks!";
}
};
// Driver Code
int main()
{
A::f();
}
輸出:
GeeksforGeeks!
常數函數:它是一個函數,一般在程序中聲明為常量。它還保證不允許修改對象或調用任何非常量成員函數。它指定該函數是隻讀函數,並且不會修改調用它的對象。
程序2:
C++
// C++ program to illustrate the use
// of const keyword
#include <iostream>
using namespace std;
// Driver Code
int main()
{
const double a = 1;
// Using the below line of code
// gives error
// a = 2.21;
cout << a << endl;
return 0;
}
輸出:
1
靜態函數和常量函數之間的表格差異:
Static Function |
Constant Function |
---|---|
它是使用 static keyword 聲明的。 | 它是使用 const keyword 聲明的。 |
它不允許再次修改變量或數據成員或函數。相反,它是在程序的整個生命周期內分配的。 | 它允許指定變量是否可修改。 |
它有助於調用使用類而不使用對象的函數。 | 它幫助我們避免修改對象。 |
該函數隻能由靜態數據成員和靜態成員函數調用。 | 可以使用任何類型的對象調用該函數。 |
聲明全局數據很有用,當程序駐留在內存中時應該更新這些數據,用於限製對函數的訪問,在其他文件中重用相同的函數名稱等。 | 它對於傳遞給函數的指針或引用很有用,用於避免對象的意外更改,可以由任何類型的對象調用等。 |
它是一個成員函數,通常允許使用類訪問函數而不使用類的實例。 | 它是一個成員函數,一般在程序中聲明為常量。 |
相關用法
- C++ static_cast用法及代碼示例
- C++ stack::empty()用法及代碼示例
- C++ stack::pop()用法及代碼示例
- C++ stack::push()用法及代碼示例
- C++ stack::size()用法及代碼示例
- C++ stack::top()用法及代碼示例
- C++ stack emplace()用法及代碼示例
- C++ stack swap()用法及代碼示例
- C++ stack top()用法及代碼示例
- C++ stable_sort()用法及代碼示例
- C++ stack push()、pop()用法及代碼示例
- C++ strtod()用法及代碼示例
- C++ strtol()用法及代碼示例
- C++ strtoll()用法及代碼示例
- C++ strtoull()用法及代碼示例
- C++ strcpy()用法及代碼示例
- C++ strncpy()用法及代碼示例
- C++ strcat()用法及代碼示例
- C++ strncat()用法及代碼示例
- C++ strcmp()用法及代碼示例
- C++ strncmp()用法及代碼示例
- C++ strchr()用法及代碼示例
- C++ strspn()用法及代碼示例
- C++ strcspn()用法及代碼示例
- C++ strpbrk()用法及代碼示例
注:本文由純淨天空篩選整理自madhurihammad大神的英文原創作品 Difference between static and constant function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。