当前位置: 技术问答>java相关
JAVA中有没有拷贝构造函数这个概念?相同类型的对象间可以直接赋值吗?
来源: 互联网 发布时间:2015-09-16
本文导语: 如题 | 楼上说的对,对象直接复制就是引用 比如在Java中 MyObject a; Myobject b; a=b 就相当于C++中的下面的样子: Myobject a; Myobject b; a=&b; 如果在Java中不使用引用,想实现C++的拷贝,那实际上就...
如题
|
楼上说的对,对象直接复制就是引用
比如在Java中
MyObject a;
Myobject b;
a=b
就相当于C++中的下面的样子:
Myobject a;
Myobject b;
a=&b;
如果在Java中不使用引用,想实现C++的拷贝,那实际上就是Java中的Clone因为Clone实际上就是在创建一个对象重新分配存储空间,这与引用是不同的。
比如在Java中
MyObject a;
Myobject b;
a=b
就相当于C++中的下面的样子:
Myobject a;
Myobject b;
a=&b;
如果在Java中不使用引用,想实现C++的拷贝,那实际上就是Java中的Clone因为Clone实际上就是在创建一个对象重新分配存储空间,这与引用是不同的。
|
因为java是不要程序员亲自delete对象的 所以用不找copy constructor
我是这么理解的,就算你原来的引用被赋null,但是这个对象还有别的引用被指向,所以不会被garbage collected
不知道对不对:)
我是这么理解的,就算你原来的引用被赋null,但是这个对象还有别的引用被指向,所以不会被garbage collected
不知道对不对:)
|
对象不能吧
要自己实现clone的这个方法吧
要自己实现clone的这个方法吧
|
我不知道你说的是不是克隆。java中的根类Object有clone()这个方法,不过是protected的,所以,你要是想用到这个方法,在你的类里把这个方法覆盖,声明成public。
|
Java中对象的直接赋值都是赋reference,比如:
MyObject a = b;
a和b就指向了同一块内存,所以,肯定没有什么copy constructor了!
MyObject a = b;
a和b就指向了同一块内存,所以,肯定没有什么copy constructor了!