什么是对象,什么是对象引用
对象,就是类的一个实例化,把一个抽象不好理解的类举出一个实体来,例如人类是一个类,会吃喝拉撒,实例化出一个小明这个具体的人。 对象引用,就是得给这个人取个名字来指代他,跟c++的指针一样,指向这个人,可以给他一个名字王小明,王小明就是对象引用。我们想到这个人的时候就会用王小明去代替他,例如 王小明今天吃了什么,王小明多高,多重,是这个人的属性,用编程语言就是 print(王小明.身高)
那么在内存上有什么区别呢,当我 用人这个类实例化出王小明时,电脑是这样识别的 (人 王小明),王小明=new 人(185,60),先给出一个对象引用,此时王小明这个代号可以指向任何人,你也可以叫王小明,他也可以,然后我实例化出一个人,我把王小明这个代号指向了这个人,这个人的内存是在堆内存里的,而王小明这个对象引用是在栈内存里的,
栈和堆有什么区别呢
参考文章十分详细介绍了
https://blog.csdn.net/abcjennifer/article/details/39780819
1 栈:为编译器自动分配和释放,如函数参数、局部变量、临时变量等等
2 堆:为成员分配和释放,由程序员自己申请、自己释放。否则发生内存泄露。典型为使用new申请的堆内容。
除了这两部分,还有一部分是:3 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。
明显,一个人可以拥有很多名字,小名绰号艺名笔名,我们可以用周树人去指代这个对象,也可以用鲁迅去指代这个对象,甚至可以用迅哥儿去指代,也就是说一个对象可以拥有很多个对象引用
注:这里这个文章讲一个引用可以指向多个对象,我不是很理解和赞同https://blog.csdn.net/weixin_43343890/article/details/100740707
然后,就会有一个问题了,能不能有一个类我们只需要一个对象呢,例如人这个类,我写他的时候,我能不能只想要王小明这一个人,别人再创建时无论创建多少个对象引用都只能指向我这个一个对象,
单例模式可以满足这样的需求
具体可以看这篇文章
https://blog.csdn.net/yangshangwei/article/details/50198821
c++和java在创建对象时有什么区别呢
我好像没有看到java里有 delete这个方法,java会自动清理内存。具体咋个自动法,我还需要深入学习,而c++就有这个方法,free和delete 这是一个区别,
未完待续