静态属性和静态方法2

让编程改变世界

Change the world by program


静态方法

嗯,还是静态方法?!这阵子有鱼油表示对该方法的特色还是有点云里雾里还有那个神神兮兮的this指针。。。 所以小甲鱼保持务必让你彻底领悟的精神继续和大家探讨!

我们先来说说潜规则吧:

静态成员是所有对象共享的,所以不能再静态方法里访问非静态的元素。 非静态方法可以访问类的静态成员,也可以访问类的非静态成员。   为什么呢?

再论this指针

回顾下:

this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,指向被调用函数所在的对象的地址。 当一个对象被创建时,该对象的 this指针就自动指向对象数据的首地址。   我们从一个比较有特色的例子来体会 this指针的工作原理:特色例子.txt   在任何一个方法里都可以使用 this 指针。从本质上讲,C++中的对象其实是一种特殊的结构 -- 除了变量,还包含着一些函数的特殊结构。 在程序运行时,对象的属性(变量)和方法(函数)都是保存在内存里,这就意味着它们各自都有与之相关联的地址。   这些地址都可以通过指针来访问,而 this指针毋庸置疑是保存着对象本身的地址。 每当我们调用一个方法的时候,this指针都会随着你提供的输入参数被秘密的传递给那个方法。 正是因为如此,我们才能在方法里像使用一个局部变量那样使用 this指针。   因为静态方法不是属于某个特定的对象,而是由全体对象共享的,这就意味着它们无法访问 this指针。 所以,我们才无法在静态方法里访问非静态的类成员。

另外需要注意

在使用静态属性的时候,千万不要忘记为它们分配内存。具体做法很简单,只要在类声明的外部对静态属性做出声明(就像声明一个变量那样)即可。 静态方法也可以使用一个普通方法的调用语法来调用,但建议不要这么做,那会让代码变得更糟糕! 请坚持使用:ClassName::methodName(); 请不要使用:objectName.methodName(); [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://urlxf.qq.com/?IF36RrY']视频下载[/Downlink] [Downlink href='http://kuai.xunlei.com/d/LMMSGBXIGIFF']备胎下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2012/04/22/3847168.html

静态属性和静态方法2 - C++快速入门22相关推荐

  1. PHP中的静态属性、静态方法、常量属性

    2019独角兽企业重金招聘Python工程师标准>>> 1.静态属性.静态方法 在面向对象编程中,我们不仅可以通过对象访问方法和属性,还可以通过类来访问它们.这样的方法和属性就是&q ...

  2. php静态方法怎么调用非静态属性,关于静态方法不能调用类中的非静态属性的理解...

    class test{ public $a; public function game(){ echo "123"; } public static function name() ...

  3. class类,静态属性 以及 静态方法

    class  创建类         class People{             constructor(name="王一",age=16) {      // const ...

  4. php中如何声明静态属性,PHP使用static关键字声明静态属性和静态方法

    PHP使用static关键字声明静态属性和静态方法 在PHP中,通过static关键字修饰的成员属性和成员方法被称为静态属性和静态方法. 静态属性和静态方法不需要在被类实例化的情况下就可以直接使用. ...

  5. 静态属性、静态方法、静态代码块

    1.什么是静态属性.静态方法 用static修饰符修饰的属性和方法叫作静态属性和静态方法 静态属性和非静态属性的区别: 1.在内存中存放的位置不同:所有static修饰的属性和方法都存放在内存的方法区 ...

  6. sv中静态属性和静态方法

    静态属性 类的内存空间是动态分配和释放的,同一个类的不同实例,即使其中变量的名称相同,也是不同的东西. 如果需要一个变量,这个变量能够被一个类的所有实例共享,那么就需要声明这个变量为static. 可 ...

  7. C++ 静态属性和静态方法

    为什么需要静态属性和静态方法 静态成员是类级别的,也就是它和类的地位等同,而普通成员是对象(实例)级别的.类级别的成员,应先于该类任何对象的存在而存在,所以类的静态成员会被该类所有的对象共享,因此不能 ...

  8. 类属性、类方法;私有属性、公有属性;私有方法、公有方法;静态属性、静态方法;python的命名规范__xx__\__xx\_xx(自用笔记)

    Ⅰ.类属性.类方法(类和实例都能调用类属性和类方法) 类是一个特殊的对象,Python 中 一切皆对象:class AAA: #定义的类属于 类对象obj1 = AAA() #属于 实例对象 除了封装 ...

  9. PHP中普通方法如何调用静态属性,php中的静态属性和静态方法如何调用

    静态属性.方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性). (推荐教程:php图文教程) 实例: header("content-type: ...

最新文章

  1. 95后博士生曹原连发两篇Nature,均为一作,网友:这才是真正的后浪
  2. Windows API实现窗口居中
  3. Tomcat虚拟主机
  4. ant design pro取消登录_JeecgBoot实战按需加载 Ant-Design-Vue和Icon
  5. python字符串的冒泡排序_如何实现python冒泡排序算法?
  6. N551JM集显和独显切换
  7. gdal获取像元的灰度值java_GDAL利用地理坐标读取图像像元值
  8. 用户界面和兼容性测试
  9. 计算机网络---网络层ARP协议
  10. DHTML【3】--HTML
  11. OpenCV编译时提示错误“ Built target libprotobuf”
  12. 一些控制鼠标的例子!
  13. Notepad2-mod,轻量级文本编辑器、代替记事本的最佳选择
  14. GitHub双重认证问题
  15. 大一期末计算机考试评分标准,大学生平时成绩考核评价标准
  16. 随机数字表法计算机分配,随机数表法.ppt
  17. Hulu热招 | ADI广告数据和算法团队
  18. 会计平台常见问题QA
  19. 如何有效实现软件的需求管理 - 1
  20. Mysql数据库---约束类型_MySQL约束类型及举例介绍

热门文章

  1. c# 中如何定义和接收消息
  2. 把Excel文件中的数据读入到DataGrid中
  3. Grape和Sinatra结合使用
  4. java 二进制模块_深入Node模块Buffer-学会操作二进制
  5. 红旗linux可以做服务器吗,在红旗Linux中的E-MAIL服务器(postfix及dovecot)配置过程...
  6. impala 本年格式化时间_hive,hbase,impala之间的对比
  7. python编码问题无法复现_Python编码问题详解
  8. spark编程基础--5.1RDD编程基础
  9. tomcat限速_WEB服务的下载限速(二)(限速模块安装与配置)
  10. 17-flutter导航栏渐变效果