1.67、类内普通成员函数可以调用类内静态变量吗

静态成员变量属于类本身,而不是某个具体对象,所有对象共享同一份静态变量内存。普通成员函数属于类的对象,可以通过对象访问类的所有成员,包括静态成员变量。

在普通成员函数中访问静态成员变量时,无需通过对象实例,可以直接使用类名访问,也可以通过对象访问,语义上等价。

静态成员变量的生命周期贯穿整个程序运行期,普通成员函数调用时静态成员变量始终存在,访问安全。

权限控制依然有效,普通成员函数只能访问其权限范围内的静态成员变量(如private静态成员变量除非是该类成员函数,否则不可访问)。

示例代码:

class Person {
public:
    static int s_age;  // 静态成员变量声明
    int m_id;          // 普通成员变量

    void func() {      // 普通成员函数
        m_id = 10;     // 访问普通成员变量
        s_age = 20;    // 访问静态成员变量
    }
};

int Person::s_age = 0// 静态成员变量定义和初始化

总结来说,类内普通成员函数访问静态成员变量是C++语言设计的常见且合理的用法,体现了静态成员变量作为类级别共享资源的特性,同时普通成员函数作为对象行为也能访问类级别资源,二者兼容且互补。
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
(加入我的知识星球,免费获取账号,解锁所有文章。)

阅读剩余
THE END