C++静态成员

综述:

  • 静态成员:静态类中的成员加入static 修饰符,即是静态成员,可以使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态成员,因为静态成员存在于内存,所以非静态成员可以直接访问类中的静态成员。静态成员属于整个类(不属于具体的某个对象),是被每个对象共享的,可以被某个对象调用.

    一个小栗子:aa.A::f1()静态成员函数是对象共有的

  • 非静态成员:所以没有加static的成员都是非静态成员,当类被实例化后,可以通过实例化的类名进行访问,非静态成员的生存期决定于该类的生存期,而静态成员则不存在生存期的概念,因为静态成员始终驻留在内存中。

 

静态成员变量:

静态成员函数不具有this指针,从这个意义上讲,它无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,它只能调用其余的静态成员函数。

void A::PostMainMessage(...)//该函数是static,不会传入this,因此内部不能调用(也可以理解为访问)非静态变量和函数.
{//内部需要保证是static
    if(m_pMessageQueue/*静态*/)
        m_pMessageQueue->PostMessage(...)/*静态*/;
}

 

注意这里的调用不是点操作(.)或者箭头操作(->),这个是正常的对象对成员的访问,无关static.

 

https://www.cnblogs.com/VVingerfly/p/7128162.html

posted @ 2018-12-24 13:09  心媛意码  阅读(135)  评论(0编辑  收藏  举报