成员变量 局部变量 类变量

成员变量和局部变量的区别

       成员变量:

          1、成员变量定义在类中,在整个类中都可以被访问。

          2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

          3、成员变量有默认初始化值。

      局部变量:

          1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

          2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

          3、局部变量没有默认初始化值 

      在使用变量时需要遵循的原则为:就近原则

      首先在局部范围找,有就使用;接着在成员位置找。

       由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的  特殊描述。

成员变量和静态变量的区别:

   1、成员变量所属于对象。所以也称为实例变量。

      静态变量所属于类。所以也称为类变量。

   2、成员变量存在于堆内存中。

      静态变量存在于方法区中。

   3、成员变量随着对象创建而存在。随着对象被回收而消失。

      静态变量随着类的加载而存在。随着类的消失而消失。

   4、成员变量只能被对象所调用 。

      静态变量可以被对象调用,也可以被类名调用。

   所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。

成员分两种:

   1、成员变量。(数据共享时静态化)

      该成员变量的数据是否是所有对象都一样:

      如果是,那么该变量需要被静态修饰,因为是共享的数据。 

      如果不是,那么就说这是对象的特有数据,要存储到对象中。 

   2、成员函数。(方法中没有调用特有数据时就定义成静态)

      如果判断成员函数是否需要被静态修饰呢?

      只要参考,该函数内是否访问了对象中的特有数据:

      如果有访问特有数据,那方法不能被静态修饰。

      如果没有访问过特有数据,那么这个方法需要被静态修饰。

转载于:https://www.cnblogs.com/wangzhiming/p/6754668.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从DevOps到Cloud Native,应用上云姿势全解锁

本文由网易云 发布作者:林帆序文伴随着IaaS、PaaS等云端基础设施技术的成熟,“应用上云”成为许多企业软件部门的心头大事。通过把传统软件系统搬到云上,一方面可以让业务方获得更多的资源灵活性,另一方面也可以缓解运营方的成本压…

foreach

foreach 遍历数组内每个元素,迭代一次执行一次循环语句。 相当于增前后的for循环

深入理解C++对象模型-对象的内存布局,vptr,vtable

vtpr的位置: 为了支持多态,C引入了vtpr和vtable这两个概念.对于每个有虚函数的类,C都会为其生成一个vtable,并在类中添加一个隐含的数据成员vptr. 对于vptr在对象中的位置,跟类的数据成员的布局一样,C标准里面并没有做出任何的规定.但是对于特定的编译器,我们还是可以通…

Visual Studio Code 常用插件整理

常用插件说明: 一、HTML Snippets 超级使用且初级的H5代码片段以及提示 二、HTML CSS Support 让HTML标签上写class智能提示当前项目所支持的样式 三、Debugger for Chrome 让vscode映射chrome的debug功能,静态页面都可以用vscode来打断点调试、配饰稍…

sublime 正则搜索日语字符

sublime 正则搜索日语字符 [\x{3041}-\x{3096}\x{30A0}-\x{30FF}\x{3400}-\x{4DB5}\x{4E00}-\x{9FCB}\x{F900}-\x{FA6A}\x{2E80}-\x{2FD5}\x{FF5F}-\x{FF9F}\x{3000}-\x{303F}\x{31F0}-\x{31FF}\x{3220}-\x{3243}\x{3280}-\x{337F}\x{FF01}-\x{FF5E}] 参考: http://www.localiz…

函数域中申请堆空间出函数后不会自动释放

#include<iostream> using std::cout; using std::endl; char *scat(char *s1,char *s2) { char *snew char[strlen(s1)strlen(s2)1]; strcpy(s,s1); strcat(s,s2); return s;//返回刚申请的堆空间的首址&#xff0c;出了函数后变量s就不复存在了&#xff0c;但申请的…

/home文件夹重新划分独立分区

1. 备份home文件夹&#xff0c;数据丢失的时候可以使用cp -av /home/* /data/2. 磁盘分区2.1 虚拟机中添加磁盘并让系统识别&#xff0c;使用# echo - - - >> /sys/class/scsi_host/host0/scan# echo - - - >> /sys/class/scsi_host/host1/scan# echo - - - >…

使用halcon将一个圆上的点拟合成圆形并且求出圆心

我们在自动化贴装机标定过程中&#xff0c;需要计算吸头的旋转中心位置。我们一般使用的方法是使用模板匹配&#xff0c;做一个模板&#xff0c;吸头旋转一个角度寻找模板一次&#xff0c;通过多次旋转求取吸头的旋转中心。 使用halcon实现 public bool FitCircle(double[] X…

This 指针

如果你期望衍生类别重新定义一个成员函数&#xff0c;那么你应该在基础类别中把此函数设为 virtual。 以单一指令唤起不同函数&#xff0c;这种性质称为Polymorphism&#xff0c;意思是"the ability toassume many forms"&#xff0c;也就是多态。 虚拟函…

史上最全亚历山大大帝名言

&#xff08;1&#xff09;把财富分给他人&#xff0c;把希望留给自己&#xff0c;他将带给我无穷的财富。——亚历山大大帝 &#xff08;2&#xff09;山不走到我这里来&#xff0c;我就走到他那里去。——亚历山大大帝 &#xff08;3&#xff09;能够战胜恐惧就能战胜死亡。—…

jdbcmysql

做java开发难免会用到数据库,操作数据库也是java开发的核心技术。那我们现在就来谈谈javajdbc来操作mysql数据库吧 第一步&#xff1a;我们需要把mysql的驱动引进来这里引驱动就是把mysql-connector-java-5.1.37-bin.jar加到项目中来&#xff0c;下面附jar包 第二步&#xff1a…

char **p, char a[16][8]; 问:p=a 是否会导致程序在以后出现问题?为什么?

int (*v)[10]; 在 Visual C 里面不能与 int **v 等同起来。 举个例子&#xff1a; int **p; int (*v)[10]; int a[10][10]; 如果写 v a 是可以的。 如果写 p a 将会引起一个类型不匹配的编译错误。 二级指针&#xff08;int **p&#xff09;需要自己指向一个一级指针&#x…

draw_circle_mod预生成交互式圆形

目录draw_circle_mod&#xff08;算子&#xff09;描述参数draw_circle_mod&#xff08;算子&#xff09; draw_circle_mod - 圆的交互式绘图。 draw_circle_mod&#xff08;:: WindowHandle&#xff0c;RowIn&#xff0c;ColumnIn&#xff0c;RadiusIn&#xff1a;Row&#…

川崎机器人c#通讯(转)

由于本人在工业自动化行业做机器视觉的工作&#xff0c;所以除了图像处理方面要掌握外&#xff0c;还需要与工业机器人进行通信。最近学习了计算机与川崎机器人的TCP/IP通信&#xff0c;于是在这里记录一下。 除了直接与机器人通信外&#xff0c;有一种方式是通过PLC间接通信&a…

模板类 Template Classes 以及模板类编译时的处理

&#xfeff;&#xfeff;我们可以建立template classes&#xff0c;使它们能够神奇地操作任何类型的资料。下面这个例子是让CThree 类别储存三个成员变量&#xff0c;成员函数Min 传回其中的最小值&#xff0c;成员函数Max 则传回其中的最大值。我们把它设计为template class&…

行转列及列转行查询

开发过程中常遇到行转列或是列转行的问题&#xff0c;即需要将数据库中一张表信息进行行转列操作&#xff0c;再将每列&#xff08;即每个字段&#xff09;作为与其他表进行联表查询的字段进行显示。 一、行转列&#xff1a;将原来同一列下多行的不同内容作为多个字段&#xff…

移动端系列讲解之字体单位

移动端字体单位有哪些&#xff1f;他们的兼容性如何&#xff1f;他们的特点&#xff1f;1.移动端字体单位现在主要有 em 、rem 、px 2.兼容性请传送点击这里 em: em是相对长度单位。相对于父元素设置的字体大小。em相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸…

x264_param_t参数注解

typedef struct x264_param_t { CPU 标志位 unsigned int cpu; int i_threads; 并行编码多帧 int b_deterministic; 是否允许非确定性时线程优化 int i_sync_lookahead; 线程超前缓冲 视频属性 int i_width; 宽度 int i_height; 高…

gen_circle_contour_xld创建圆或圆弧的XLD轮廓

目录gen_circle_contour_xld&#xff08;算子&#xff09;描述参数gen_circle_contour_xld&#xff08;算子&#xff09; gen_circle_contour_xld - 创建圆或圆弧的XLD轮廓。 gen_circle_contour_xld&#xff08;&#xff1a;ContCircle&#xff1a;Row&#xff0c;Column&am…

一、Java语言基础(4)_方法和数组——数组

2018-04-25 不悔梦归处&#xff0c;只恨未尽心 数组 一、一维数组 数组的含义&#xff1a;具有相同类型的多个变量按有序形式组织起来的数据形式。&#xff08;数组是用来存储固定大小的同类型元素。&#xff09;数组的定义&#xff1a;方式1&#xff08;推荐使用&#xff09;&…