龙空技术网

C++静态成员和成员指针

刷新isc 444

前言:

当前小伙伴们对“静态成员变量怎么赋值出来”大致比较关切,朋友们都需要分析一些“静态成员变量怎么赋值出来”的相关知识。那么小编同时在网摘上汇集了一些对于“静态成员变量怎么赋值出来””的相关知识,希望兄弟们能喜欢,姐妹们快快来学习一下吧!

静态成员和成员指针

1 静态成员变量

1)声明与定义

声明:

class 类名{ static 数据类型 变量名;};

定义:

数据类型 类名::变量名 = 初值;

2)非静态成员变量属于对象,而静态成员变量不属于对象。

3)不能在构造函数中定义及初始化,需要在类的外部单独定义和初始化。

4)可以通过类名直接访问,也可以通过对象访问。

5)静态成员在该类的多个实例对象间共享。

6)静态成员变量使用受访问控制属性的约束。

2 静态成员函数

1)可以通过类名直接访问,也可以通过对象访问。

2)静态成员函数没有 this 指针,也没有 const 属性。

3)静态成员函数使用受访问控制属性的约束。

4)在静态成员函数中只能访问静态成员,在非静态成员函数中既可以访问静态成员,也可以访问非静态成员。

3 成员变量指针

1)定义

类型 类名:: *成员指针变量名 = &类名::成员变量;

class Student{ string m_name; string m_home;};Student s1;string* p = &s1.m_name; //普通指针string Student::*pname=&Student::m_name; //成员变量指针

2)赋值

指针 = &类名::成员变量名;

pname = &Student::m_home;

3)使用

对象.*成员指针变量名;

".*" 叫做成员指针解引用运算符

对象指针->*成员指针变量名;

"->*" 叫做间接成员指针解引用运算符

class Student{ string m_name; string m_home;};Student s1;string Student::*pname = &Student::m_name; //成员变量指针s1.*pname;Student* ps = &s1;ps->*pname

4)成员变量指针的本质就是类中特定成员在对象中的相对地址。

4 成员函数指针

1)定义

返回类型 (类名::*成员函数指针)(形参表) = &类名::函数名;

2)赋值

成员函数指针 = &类名::成员函数名;

3)使用

(对象.*成员函数指针) (实参表);

(对象指针->*成员函数指针) (实参表);

5 单例模式

只允许存在唯一的对象实例,也就是一个类只能创建一个对象。

1)禁止在类的外部创建对象:私有化构造函数

2)类自己维护一个唯一实例:静态成员变量

3)提供该对象的访问方法:静态成员函数

4)创建方式:

a. 饿汉式 : 无论用或不用,程序已启动就创建

b. 懒汉式 : 用的时候再创建,不用时候即销毁

标签: #静态成员变量怎么赋值出来