广州网站设计制作公司,高端网站设计技术分析,专做农产品跨境的网站有,销售网站是什么一、c静态成员变量
在C中#xff0c;静态成员变量#xff08;Static Member Variable#xff09;是类的一种特殊类型的成员变量#xff0c;它被类的所有实例共享#xff0c;而不是每个实例都有自己的副本。静态成员变量在类的所有对象之间保持唯一的状态#xff0c;具有…一、c静态成员变量
在C中静态成员变量Static Member Variable是类的一种特殊类型的成员变量它被类的所有实例共享而不是每个实例都有自己的副本。静态成员变量在类的所有对象之间保持唯一的状态具有一些特殊的用途和语法。
1、概念
静态成员变量是类的成员变量但不是依赖于类的实例而存在的。它在类的所有实例之间共享相同的内存位置因此在类的所有对象之间保持唯一的状态。 静态成员变量在类的声明中使用static关键字来定义并在类的实现文件中进行初始化换句话说就是不能在类中进行初始化。
2、使用方法
①、声明静态成员变量 在类的声明中使用static关键字声明静态成员变量。声明通常在类的public、private或protected部分。
②、初始化静态成员变量(不能在类里面进行初始化) 静态成员变量需要在类的实现文件中进行初始化。在类外部使用类名和作用域解析操作符::来初始化静态成员变量。
③、访问静态成员变量 静态成员变量不属于类的实例因此可以使用类名和作用域解析操作符来访问也可以在类的成员函数中通过this指针访问。
案例
#include iostream
using namespace std;
class MyClass {public:/**声明静态成员变量*静态成员变量在编译阶段就已经分配了内存存在全局静态区*/static int staticVar;MyClass() {// 在构造函数中修改静态成员变量staticVar;}// 静态成员函数用于访问静态成员变量static void printStaticVar() {cout Static variable value: staticVar endl;}
};// 初始化静态成员变量
int MyClass::staticVar 0;//在类外初始化int main() {MyClass obj1;MyClass::printStaticVar(); // 访问静态成员变量MyClass obj2;MyClass::printStaticVar(); // 访问静态成员变量return 0;
}
3、总结 ①静态成员变量在内存中只有一份,多个对象共享一个静态变量 ②静态成员变量,必须类内声明,类外定义 ③静态成员变量可以通过类的作用域访问 ④静态成员变量可以通过类的对象访问
二、静态成员函数
1、概念
静态成员函数Static Member Function 静态成员函数是不依赖于类的实例的成员函数。它们可以通过类名和作用域解析操作符::直接访问。静态成员函数不能访问非静态成员变量也不能使用this指针。
2、特点
①静态成员函数能访问静态成员变量不能访问普通的成员变量 ②可以通过类的作用域访问静态成员函数 ③可以通过对象访问静态成员函数
案例代码
#include iostream
using namespace std;
class MyClass {private:int regularVar; // 普通成员变量static int staticVar; // 静态成员变量public:MyClass(int regValue, int statValue) : regularVar(regValue) {staticVar statValue;}static void staticFunction() {// 静态成员函数可以访问静态成员变量但不能访问普通成员变量cout Static member function accessing staticVar: staticVar endl;// 下面一行会引发编译错误因为静态函数不能访问普通成员变量// cout Static member function accessing regularVar: // regularVar endl;}void regularFunction() {cout Regular member function accessing regularVar: regularVar endl;}
};// 初始化静态成员变量
int MyClass::staticVar 0;int main() {// 使用类的作用域访问静态成员函数MyClass::staticFunction();MyClass obj(42, 100);obj.regularFunction();// 通过对象访问静态成员函数obj.staticFunction(); // 也可以通过对象访问但是不推荐最好使用类名访问return 0;
}三、const修饰的静态成员变量
①const修饰的静态成员变量保存在常量区,只读的,在内存中只有一份 ②const修饰的静态成员变量可以在类内定义且初始化 ③const修饰的静态成员变量可以通过类的作用域访问 ④const修饰的静态成员变量可以通过对象访问 ⑤静态成员函数可以访问const修饰的静态成员变量
代码案例
#include iostream
using namespace std;class MyClass {public:// 在类内部定义且初始化带有const修饰的静态成员变量static const int staticConstVar 42;static void printStaticConstVar() {// 静态成员函数可以访问const修饰的静态成员变量cout Static const variable value: staticConstVar endl;}
};int main() {// 通过类的作用域访问const修饰的静态成员变量cout Accessing via class scope: MyClass::staticConstVar endl;// 通过对象访问const修饰的静态成员变量MyClass obj;cout Accessing via object: obj.staticConstVar endl;// 调用静态成员函数访问const修饰的静态成员变量MyClass::printStaticConstVar();return 0;
}