前言:
当前小伙伴们对“静态成员变量怎么赋值出来”大致比较关切,朋友们都需要分析一些“静态成员变量怎么赋值出来”的相关知识。那么小编同时在网摘上汇集了一些对于“静态成员变量怎么赋值出来””的相关知识,希望兄弟们能喜欢,姐妹们快快来学习一下吧!静态成员和成员指针
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. 懒汉式 : 用的时候再创建,不用时候即销毁
标签: #静态成员变量怎么赋值出来