const用法
常量变量声明:
常量指针:
int x = 10, y = 20; const int* p1 = &x; int* const p2 = &x; const int* const p3 = &x;
|
函数参数声明为常量:
void func(const int x) { }
|
类数据成员声明为常量:
class MyClass { public: MyClass(int value) : m_value(value) {} private: const int m_value; };
|
const 成员函数:
class MyClass { public: int get() const { return m_value; } private: int m_value; };
|
static用法
静态局部变量:
void incrementCount() { static int count = 0; count++; std::cout << "Count: " << count << std::endl; }
int main() { incrementCount(); incrementCount(); incrementCount(); return 0; }
|
在这个例子中,每次调用incrementCount()
函数时,静态局部变量count
的值都会保持并递增,而不是在函数退出时重置为0。
静态全局变量:
static int value = 10;
#include <iostream>
extern int value;
int main() { std::cout << "Value: " << value << std::endl; return 0; }
|
在这个例子中,file1.cpp
中定义了一个静态全局变量value
,在file2.cpp
中通过extern
关键字声明并访问该变量。由于value
是静态全局变量,因此它的作用域仅限于file1.cpp
内部。
静态成员变量:
class MyClass { public: static int count;
MyClass() { count++; }
~MyClass() { count--; } };
int MyClass::count = 0;
int main() { MyClass obj1, obj2, obj3; std::cout << "Object count: " << MyClass::count << std::endl; return 0; }
|
在这个例子中,MyClass
有一个静态成员变量count
,它记录了MyClass
对象的数量。无论创建多少个MyClass
对象,count
的值都会保持一致。
静态成员函数:
class MyClass { public: static int getCount() { return count; }
private: static int count; };
int MyClass::count = 0;
int main() { MyClass obj1, obj2, obj3; std::cout << "Object count: " << MyClass::getCount() << std::endl; return 0; }
|
在这个例子中,MyClass
有一个静态成员函数getCount()
,它可以直接通过类名访问,而不需要创建对象。该函数返回静态成员变量count
的值,表示MyClass
对象的数量。