假设一宏槐个类的名字叫Person
class Person
{
private:
static Person*p //这个就是类里面的静态指针变量
};
那么,在类外指针的初始化,有两种,要么指向一块内存空间,要么是空指针,初始化可以这样写
Person* Person :: q = new Person //这个就是类外面初始化。
或者
Person* Person :: q=NULL;
参看如下代码:
#include<iostream>using namespace std
class Person
{
public:
Person()
{
cout << "默认构造函数" << endl
}
public:
static int m_A //静态 int型变量声明
static int* q //静态 int型指针变量声明
static Person*p //静态 "类"型指针变量声明
}
int Person::m_A = 10
int*Person::q = new int
//或者int*Person::q=NULL
Person*Person::p = new Person
//或者 Person*Person::p=NULL
//总结:在类外初始化,去掉static,记携绝梁得带上数据类型,后面跟上类名::
void test01()
{
Person::q
}
int main(void)
{
cout << "main函数" << endl //构造函数先于主函辩运数运行。
test01()
system("pause")
return 0
}
类的静态数据成员在 类内只能声明碧虚,定义和初始化必须在氏纯类外可以这样
class a
{
int aa
static int aaa//静态数据成员声明
}
int a::aaa=10//静态歼慧咐数据成员的定义和初始化
static在c语言中是私有、静态意思。羡毕
用于在函数中声明“静态变量”用,在每一次调用后,该变量并不在函数返回时立即释放,变量中保存的值,可以保留到下一次调用时继续有效。
私有就是隐藏。static函数只能声明后的本文中调用。static全局变量只能声明后的本文中调用。static局部变量只能声明后的本函数调用
静态就是一直存在,相对于每次调用动态分配而言。static函数未验证是否每次调用代码地址都是一致的。static全局变量生命周期到程序或进程结束。static局部变量生命周期到程序或进程结束。
static的使用和作用
静态全局变量。全局变量前加static,修饰全局变量为静态全局变量,改变全局变量的可见性。静态局部变量。局部变量前加羡散static,修饰局部变量为静态局部变量,改变局部变量的销毁时期。静态函数。函数返回类型前加static,修饰函数为静态函数,改变函数的可见性。
类的静态成员。类成员前加static,修饰类的成员为类的静态成员,兄派氏实现多个对象之间的数据共享,并且使用静态成员不会破坏封装性,也保证了安全性。类的静态函数,类函数前加static,修饰类的函数为静态函数,减少资源消耗,不需要实例化就可以使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)