คลาสการจัดเก็บข้อมูลแบบสแตติกสั่งให้คอมไพเลอร์เก็บตัวแปรท้องถิ่นไว้ตลอดช่วงอายุของโปรแกรม แทนที่จะสร้างและทำลายทุกครั้งที่เข้ามาและออกจากขอบเขต ดังนั้น การทำให้ตัวแปรโลคัลคงที่ทำให้สามารถรักษาค่าระหว่างการเรียกใช้ฟังก์ชันได้
ตัวแก้ไขแบบคงที่อาจนำไปใช้กับตัวแปรส่วนกลางได้ เมื่อเสร็จสิ้น จะทำให้ขอบเขตของตัวแปรถูกจำกัดเฉพาะไฟล์ที่ประกาศ
ใน C++ เมื่อใช้สแตติกกับสมาชิกของคลาสข้อมูล จะทำให้ออบเจ็กต์ทั้งหมดของคลาสนั้นแชร์สำเนาของสมาชิกเพียงสำเนาเดียว
ตัวอย่าง
#include <iostream> void func( void ) { static int i = 10; // local static variable i++; std::cout << "i is " << i ; std::cout << " and count is " << count << std::endl; } static int count = 6; /* Global variable */ int main() { while(count--) { func(); } }
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
i is 10 and count is 5 i is 11 and count is 4 i is 12 and count is 3 i is 13 and count is 2 i is 14 and count is 1 i is 15 and count is 0