类的静态成员

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;
}

 

posted @ 2025-05-03 15:28  靖意风  Views(19)  Comments(0)    收藏  举报