静态函数和一般函数

    无论是静态函数还是一般函数,都是属于类的,二者的区别在于:非静态函数比喻由类实例化后的对象(也就要先new)调用,这时将向函数传递this指针,而静态函数可以直接由类名::调用,

也就是说,静态函数实际上是一个全局函数,不依赖于某个对象,不创建对象就可以调用;

    普通函数依赖于一个类的对象,也就是有一个隐藏的调用函数(this)指针,必须指向一个类的对象

所有的程序都是在内存中执行,变量才会在内存中有一处位置

静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问(在静态方法内不能实用$this,只能self::方法名或者类名::方法名);非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问

在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错。

 self和static的区别,self写到哪个类就代表,代表调用哪个类,static代表使用的哪个类

 如果类的成员函数想作为回调函数来使用,如创建线程等,一般只能将它定义为静态成员函数才行。

                                              ---学习之路且长且不易,新人要脸皮厚,不怕被鄙视,不怕被嘲笑

 

原文地址:https://www.cnblogs.com/hanshuai0921/p/7059237.html