企业网站开发软件,建设工程造价信息网官网,申请百度收录网址,怎么做网站需要多少钱目录
1 c静态函数和静态变量
1.1 C静态成员函数#xff1a;
1.1.1定义与基本语法
1.1.2 不依赖于实例
1.1.3 访问限制
1.1.4共享数据
1.1.5 作用域与命名
1.1.6 工厂函数和工厂方法#xff08;常用途#xff09;
1.2 c静态函数#xff08;)
1.3c静态变量
…目录
1 c静态函数和静态变量
1.1 C静态成员函数
1.1.1定义与基本语法
1.1.2 不依赖于实例
1.1.3 访问限制
1.1.4共享数据
1.1.5 作用域与命名
1.1.6 工厂函数和工厂方法常用途
1.2 c静态函数)
1.3c静态变量
2 c语言静态变量
2.1 静态局部变量和静态全局变量
2.2 静态函数 1 c静态函数和静态变量
1.1 C静态成员函数
1.1.1定义与基本语法
在C中使用 static 关键字定义静态成员函数。静态函数的定义如下
class MyClass { public: static void myStaticFunction() { // 函数体 } };
1.1.2 不依赖于实例
静态函数不需要类的实例就可以被调用。这意味着你可以在没有创建对象的情况下直接通过类名调用它。这在需要执行与具体对象无关的操作时非常有用。 MyClass::myStaticFunction(); // 直接通过类名调用
1.1.3 访问限制
静态函数只能访问静态成员变量和其他静态成员函数不能访问实例成员非静态成员。这是因为静态函数的上下文并不与任何具体实例关联。
class MyClass {
public:static int staticVar;int instanceVar;static void myStaticFunction() {staticVar 10; // 可以访问静态成员// instanceVar 5; // 错误无法访问实例成员}
};1.1.4共享数据
由于静态成员函数和静态成员变量属于类本身而不是某个特定对象所以它们可以在所有对象之间共享。这意味着所有对象共享同一个静态变量的值。
class MyClass {
public:static int count;MyClass() {count;}static void printCount() {std::cout Count: count std::endl;}
};int MyClass::count 0; // 静态变量初始化int main() {MyClass obj1;MyClass obj2;MyClass::printCount(); // 输出 Count: 2
}1.1.5 作用域与命名
静态函数的作用域一般限于定义它的类但可以通过类名进行访问。这使得它可以明确地标识出调用的是哪个类的静态函数避免命名冲突。
1.1.6 工厂函数和工厂方法常用途
工具函数静态函数常用于实现不依赖于实例的工具函数比如数学计算等。工具函数在 MathUtil 类中静态函数 squareRoot 和 power 用于执行数学计算无需创建类的实例。
工具函数实例
#include iostream
#include cmathclass MathUtil {
public:// 静态函数计算平方根static double squareRoot(double number) {return std::sqrt(number); // 返回平方根}// 静态函数计算幂static double power(double base, double exponent) {return std::pow(base, exponent); // 返回 base 的 exponent 次方}
};int main() {double sqrtValue MathUtil::squareRoot(16.0); // 计算 16 的平方根double powerValue MathUtil::power(2.0, 3.0); // 计算 2 的 3 次方std::cout Square root of 16: sqrtValue std::endl; // 输出 4std::cout 2 raised to the power of 3: powerValue std::endl; // 输出 8return 0;
}工厂方法静态成员函数可以用作工厂方法用于创建类的实例并返回。工厂方法在 Circle 类中静态成员函数 createCircle 用于创建 Circle 实例构造函数被私有化以防止直接实例化确保通过工厂方法来控制实例的创建。
工厂方法实例
#include iostreamclass Circle {
private:double radius;// 构造函数私有化防止外部直接创建实例Circle(double r) : radius(r) {}public:// 静态工厂方法创建 Circle 实例static Circle createCircle(double r) {return Circle(r); // 返回 Circle 实例}double area() const {return 3.14159 * radius * radius; // 计算圆的面积}
};int main() {// 使用工厂方法创建 Circle 实例Circle circle Circle::createCircle(5.0); // 创建半径为5的圆std::cout Area of the circle: circle.area() std::endl; // 输出圆的面积return 0;
}1.2 c静态函数)
1.3c静态变量 静态成员变量 C中可以在类中定义静态成员变量这些变量属于类而不是某个实例。 所有实例共享同一个静态成员变量。 静态局部变量 和C语言中的静态局部变量类似静态局部变量在函数中定义后只会初始化一次并在函数调用结束后保留其值。
#include iostreamclass MyClass {
public:static int count; // 静态成员变量MyClass() {count;}static void printCount() {std::cout Count: count std::endl;}
};int MyClass::count 0; // 静态变量初始化int main() {MyClass obj1;MyClass obj2;MyClass::printCount(); // 输出 Count: 2return 0;
}2 c语言静态变量
2.1 静态局部变量和静态全局变量
C 语言中使用 static 修饰一个全局变量会将其作用域限制在定义它的文件内。也就是说其他文件无法访问这个变量
如果使用 static 修饰一个局部变量主要有以下几个作用 静态存储期局部变量会在程序开始时分配内存并在整个程序运行期间保持该内存的有效性而不是在每次进入该函数时分配和释放。这意味着该变量的生命周期延续至程序结束。 保持值每次调用该函数时静态局部变量不会被重新初始化而是保持上一次函数调用结束时的值。这使得它可以用于在多次函数调用之间保留状态。 作用域静态局部变量的作用域仍然局限于定义它的函数内外部无法直接访问。
#include stdio.hvoid counter() {static int count 0; // 静态局部变量count;printf(Count: %d\n, count);
}int main() {counter(); // 输出: Count: 1counter(); // 输出: Count: 2counter(); // 输出: Count: 3return 0;
}在这个例子中count 是一个静态局部变量它在每次调用 counter() 时保持其值。
2.2 静态函数
限制作用域静态函数的作用域仅限于定义它的源文件。这意味着其他文件无法调用这个函数有助于避免命名冲突。