0%

静态与普通成员变量及函数的区别

静态与普通变量及函数的区别就是在声明部分有无类名,即:

普通成员变量:返回类型 (类名::*指针名)=

静态成员变量:返回类型 (*指针名)=

需要注意,初始化静态成员变量要在类外初始化,不能在声明时直接赋值。

并且,调用静态成员变量的时候,不需要加对象名,直接*指针,

另外,因为优先级的原因,调用成员函数指针的时候括号不能少。

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Class
{
public:
int i = 1;
static int j;
static const int k= 3;
void fun()
{
cout << "成员函数" << endl;
}
static void staticfun()
{
cout << "静态成员函数" << endl;
}

};
int Class::j = 2; //静态成员变量初始化
void main()
{
Class c;
//变量指针
int (Class::*p1) = &Class::i; //普通成员变量指针
int (*p2) = &Class::j; //静态成员变量指针
const int (*p3) = &Class::k; //静态成员常量指针
//函数指针
void(Class::*p4)() = &Class::fun; //普通成员函数指针
void(*p5)() = &Class::staticfun; //静态成员函数指针
//指针调用
cout << c.*p1 << endl << *p2 << endl << *p3 << endl;
(c.*p4)();
(*p5)();
}
喜欢你就打赏一下