拷贝构造函数java(拷贝构造函数的参数)
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
本篇文章给大家谈谈拷贝构造函数java,以及拷贝构造函数的参数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
- 1、java中有类似C++中的拷贝构造函数的方法吗?
- 2、JAVA中有没有缺省的拷贝构造函数
- 3、JAVA中有没有拷贝构造函数这个概念
- 4、java中构造方法和拷贝构造方法是什么意思
- 5、java中有拷贝构造函数的概念吗?方法传递对象时一般如何避免副作用?
java中有类似C++中的拷贝构造函数的方法吗?
public class Test{
private int a,b,c;
public Test(Test tTest){
//1 通过反射原理把 tTest中[a,b,c]的值付给this.[a,b,c]
//手工写代码 如this.a = tTest.a,this.b=tTest.b 等等
}
}

JAVA中有没有缺省的拷贝构造函数
java中有缺省的拷贝构造函数,具体参考下面的代码:
//Example:
//1.Clock类:
public class Clock {
private int hour;
private int minute;
private int second;
public Clock(){
setTime(0,0,0);
}
public Clock(int h,int m,int s){
setTime(h,m,s);
}
/* 拷贝构造函数 */
public Clock(Clock clock){
this.hour=clock.hour;
this.minute=clock.minute;
this.second=clock.second;
}
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public int getSecond() {
return second;
}
public void setTime(int h,int m,int s){
if(h=0 h24)
this.hour=h;
else
this.hour=0;
if(m=0 m60)
this.minute=m;
else
this.minute=0;
if(s=0 s60)
this.second=s;
else
this.second=0;
}
public void printTime(){
if(this.hour10)
System.out.print("0");
System.out.print(this.hour+":");
if(this.minute10)
System.out.print("0");
System.out.print(this.minute+":");
if(this.second10)
System.out.print("0");
System.out.println(this.second);
}
}
//2.main函数:
public class Program {
public static void main(String[] args) {
Clock c1=new Clock(6,43,23);
Clock c2=new Clock(c1);//调用拷贝构造函数
c1.printTime();
c2.printTime();
}
}
//3.运行结果:
06:43:23
06:43:23
JAVA中有没有拷贝构造函数这个概念
Java中对象的直接赋值都是赋reference,比如:
MyObject a = b;
a和b就指向了同一块内存,所以,肯定没有什么copy constructor了!
java中构造方法和拷贝构造方法是什么意思
构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
拷贝构造方法就是用一个已经实例化的对象来new另一个对象
给个例子:
public class Test {
private int hour;
private int minute;
private int second;
// 构造方法
public Test() {
}
// 拷贝构造方法
public Test(Test t) {
super();
this.hour = t.hour;
this.minute = t.minute;
this.second = t.second;
}
}
java中有拷贝构造函数的概念吗?方法传递对象时一般如何避免副作用?
我也是找的,希望帮到你。
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”)
1) 一个对象作为函数参数,以值传递的方式传入函数体
2) 一个对象作为函数返回值,以值传递的方式从函数返回
3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化)
当用引用变量做参数时,不调用拷贝构造函数,用传递引用的方式给函数传递一个对象的引用时,只传递了该对象的地址,系统消耗较小。在函数体内访问 形参,实际是访问了这个作为实参的对象。例如:void function(CTest test);
Java中的引用传递是指: 例如:void function(CTest test),没有号
通常的原则是:①对于凡是包含动态分配成员或包含指针成员的类都应该提供拷贝构造函数;②在提供拷贝构造函数的同时,还应该考虑重载"="赋值操作符号。
具体过程:首先建立对象theObjtwo,并调用其构造函数,然后成员被复制初始化。
其完成方式是内存拷贝,复制所有成员的值。完成后,theObjtwo.pBuffer==theObjone.pBuffer。
即它们将指向同样的地方,指针虽然复制了,但所指向的空间并没有复制,而是由两个对象共用了。这样不符合要求,对象之间不独立了,并为空间的删除带来隐患。所以需要采用必要的手段来避免此类情况:可以在构造函数中添加操作来解决指针成员的这种问题。
所以C++语法中除了提供缺省形式的构造函数外,还规范了另一种特殊的构造函数:拷贝构造函数,一种特殊的构造函数重载。上面的语句中,如果类中定义了拷贝构造函数,在对象复制初始化时,调用的将是拷贝构造函数,而不是缺省构造函数。在拷贝构造函数中,可以根据传入的变量,复制指针所指向的资源。
拷贝构造函数的格式为:类名(const 类名 对象名);//拷贝构造函数的原型,参数是常量对象的引用。由于拷贝构造函数的目的是成员复制,不应修改原对象,所以建议使用const关键字。
下面介绍拷贝构造函数的另一种调用:当对象直接作为参数传给函数时,函数将建立对象的临时拷贝,这个拷贝过程也将调用拷贝构造函数。
总结:当某对象是按值传递时(无论是作为函数参数,还是作为函数返回值),编译器都会先建立一个此对象的临时拷贝,而在建立该临时拷贝时就会调用类的拷贝构造函数。
拷贝构造函数的实现:
类名::类名(类名对象名)//拷贝构造函数的实现/定义
拷贝构造函数java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于拷贝构造函数的参数、拷贝构造函数java的信息别忘了在本站进行查找喔。
