类的静态成员
1.静态成员变量
静态成员变量 属于类 而不属于对象
– 静态成员变量不包含在对象中 ,进程级生命期
– 静态成员变量的定义和初始化 ,只能在类的外部而不能 在构造函数中进行。
– 静态成员变量依然受类作用域和访问控制限定符的约束
– 访问静态成员变量 , 既可以通过类也可以通过对象
– 静态成员变量为该类的所有对象实例所共享
2.静态成员函数
静态成员函数属于类 而不属于对象
– 静态成员函数没有this指针 ,也没有常属性
– 静态成员依然受类作用域和访问控制限定符的约束
– 访问静态成员函数 , 既可以通过类也可以通过对象
– 静态成员函数只能访问静态成员 , 而非静态成员函数既可以访问静态成员 ,也可以访问非静态成员
3.单例模式
a. 语法细节 :
空类的对象大小是1个字节(存了一个字节的垃圾数据)
类中 绝对不能包含 本类普通对象 作为成员变量, 但可以在类中包含 本类静态对象 作为成员变量
b.单例模式的 饥饿模式
// 单例模式 : 设计一个类,这个类对象只能出现一个 #include <iostream> using namespace std; class Singleton { public://4 //5 static Singleton& getInstance() { return s_instance; } private: Singleton() {} // 1 Singleton( const Singleton& that ) {} // 6 static Singleton s_instance; // 2 唯一的对象 }; Singleton Singleton::s_instance; // 3 // 以上代码模拟类的设计者(c++标准类/第三方类/自己设计的类...) // ----------------------------------------------------------- // 以下代码模拟类的使用者(用户) int main( void ) { Singleton& s1 = Singleton::getInstance(); Singleton& s2 = Singleton::getInstance(); Singleton& s3 = Singleton::getInstance(); cout << "&s1:" << &s1 << ", &s2:" << &s2 << ", &s3:" << &s3 << endl; return 0; }

浙公网安备 33010602011771号