c/c++ static关键字
程序员文章站
2022-05-25 16:18:51
static关键字 1,static 成员变量 static 成员变量不随着对象的创建而开辟内存空间。也就是说,不管从哪个对象去看static成员变量,都是一样的。 2, static 成员方法 static 成员方法里不可以调用非static 成员方法。 非static 成员方法里可以调用stat ......
static关键字
1,static 成员变量
- static 成员变量不随着对象的创建而开辟内存空间。也就是说,不管从哪个对象去看static成员变量,都是一样的。
2, static 成员方法
- static 成员方法里不可以调用非static 成员方法。
- 非static 成员方法里可以调用static 成员方法。
原因:非static 成员方法里是没有this指针的,所以在里面调用非static 成员方法时,无法传递this指针。static 成员方法不需要this指针。
重点:初始化static成员变量,要在类的外面。
#include <iostream> using namespace std; class test{ friend void fun(const test &t); public: test(int d = 0) : data(d){ count++; } ~test(){ count--; } private: int data; static int count; }; void fun(const test &t){ cout << t.data << endl; cout << test::count << endl; } //初始化static成员变量 int test::count = 0; int main(){ //int test::count = 0;//编译不过,必须在外面初始化static成员变量 //test::count = 0;//编译不过,必须在外面初始化static成员变量 test t(10); fun(t); test t1(11); fun(t1); }