博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态函数和一般函数
阅读量:7223 次
发布时间:2019-06-29

本文共 658 字,大约阅读时间需要 2 分钟。

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

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

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

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

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

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

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

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

 

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

 

转载于:https://www.cnblogs.com/hanshuai0921/p/7059237.html

你可能感兴趣的文章
【故障处理】IMP-00010错误 12C的dmp文件导入11G
查看>>
response.setHeader()的用法
查看>>
H5中JavaScript常用代码片段
查看>>
mysql中使用 where 1=1和 0=1 的作用
查看>>
锤子科技官方首页的特效
查看>>
C# MarshalByRefObject 和Serializable的区别
查看>>
启动Hadoop HA Hbase zookeeper spark
查看>>
SDWebImage源码解读 之 UIImage+GIF
查看>>
pg_dump实例详解(备份postgresql和greenplum数据库)
查看>>
前端学HTTP之报文首部
查看>>
[充电]多线程无锁编程--原子计数操作:__sync_fetch_and_add等12个操作
查看>>
linux系统中如何查看日志(转)
查看>>
谈谈常用清除浮动的方法
查看>>
Atitit opencv 模板匹配
查看>>
JavaScript的parseint()函数
查看>>
shell脚本,根据字符串获取行号的
查看>>
Docker学习笔记 - Docker容器与外部网络的连接
查看>>
Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
查看>>
微信小程序 view 布局
查看>>
一步一步学Python(2) 连接多台主机执行脚本
查看>>