C++变量和对象的区别联系

原创 2012年03月21日 13:15:34

对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着一块内存,但是从不同的角度去理解内存就会产生不同的意义。

  1. 变量:所谓变量就是一种定义,通过定义编译器将会开辟一段空间,并将这段内存空间和这个变量的名字捆绑在一起。从这个意思去理解,其实说白了:变量名就是内存在代码中可视化的一个符号。也就是说,如int a,a只是内存中某段地址在代码中可视化的一个符号,a本身作为符号并不占用空间,占用空间的是a所对应着的那个变量,通过a这个符号我们可以引用到该变量在内存中的位置。就好比是人和名字的关系,人作为一个真真正正的实体,是占用地球的物理空间的,是一个真实的存在,而这个人的名字只是代表了这个人的一个符号,本身并没有占用地球的物理空间,只是在他妈把他生下来的时候,把人这个实体和名字捆绑在了一起,因此,我们引用这个人的名字的时候,就等于我们找到了这个人。
  2. 对象:对象就是内存中一段有类型的区域。从这句话的描述上来看,对象至于变量,似乎更关注的是这对内存的类型,而不是名字。不能说变量就是对象,或者对象就是变量,严格来说,对象就是用来描述变量的。一点佐证是,C++中的临时变量的概念,如传参时生成的临时变量,该变量在内存中存在,但是是没有名字的,因此在代码中无法可视化,我们就无法通过名字去引用这个临时变量。
两者的区别与联系
从上面的两个描述中我们可以看到,两者都是用来描述一段内存的,但是是从不同的角度去描述:
  • 变量更强调的是变量名这个符号的含义,更强调名字与内存的联系,而不必关注这段内存是什么类型,有多少字节长度,只关注这个变量名a对应着某段内存。
  • 而对象的描述更强调的是内存的类型而不在乎名字,也就是说,从对象的角度去看内存,就需要清楚这段内存的字节长度等信息,而不关注这个对象在代码中是否有一个变量名来引用到这段内存。
举例:
int a;
如果我们说a是个变量,那我们关注的只是a这个名字对应着一块内存,当我们引用a时,我们能明确的知道我们引用的是a这个名字所对应的内存空间,而不是别的,也不去关注这个a的内存是个int啊char啊之类的什么类型。如果我们说a是个对象,则我们需要知道这个对象具体是什么类型,当我们引用并操作a的时候,就能根据类型信息做一些符合类型语义的操作,而不是暴力访问内存,任意解析内存中的数据

相关文章推荐

C/C++中对象和变量的区别!!!

本文转载与:http://blog.csdn.net/yby4769250/article/details/7377526 对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着...

Java对象和引用变量

对于引用变量的深层含义,未必在初学的时候就能深刻理解, 所以理解好下面这两句话的真正含义非常重要Case cc=new Case();Case cc; cc=new Case(); 1.先搞清楚什么...

C++变量的声明和定义 终于搞明白了

1.变量的定义:变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。 2.变量的声明:用于向程序表明变量的类型和名字。程序中变量可以声明多次,但只能定义一次。...
  • hudfang
  • hudfang
  • 2014年12月18日 09:39
  • 7428

浅谈C++变量(对象)初始化问题

随着C++的学习,发现C++中初始化问题比较复杂。故在此做一下总结: 默认初始化:如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值” 1、如果是内置类型的变量且未被显示初始...

C++创建对象的三种方式

C++中有三种创建对象的方法 #include using namespace std; class A { private: int n; public: A(int m):...
  • azhexg
  • azhexg
  • 2013年11月06日 12:56
  • 26228

C++中的类与对象

C++中的类与对象标签(空格分隔): c++ 作者:陈小默C中的类与对象 定义类 创建头文件 类和结构体 访问控制 作用域解析运算符 实现类成员 默认的内联方法 创建对象 开发环境:Visual S...

C++中类与对象的讲解(通俗易懂)

概念 描述 类成员函数 类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。 类访问修饰符 类成员可以被定义为 public、private 或 pro...

C++ 中的成员对象(学习笔记)

   【概念】成员对象:当一个类的成员是另一个类的对象时,这个对象就叫成员对象。概括的说,就是一个类的成员是一个对象,即成员对象。例如:#includeusing namespace std;clas...

C++对象创建与释放

创建对象有以下四种形式: #include using namespace std; class A{ private: int i; public: A(){ cout...

C/C++中对象和变量的区别!!!

本文转载与:http://blog.csdn.net/yby4769250/article/details/7377526 对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++变量和对象的区别联系
举报原因:
原因补充:

(最多只允许输入30个字)