问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中有拷贝构造函数的概念吗?方法传递对象时一般如何避免副作用?

发布网友 发布时间:2022-04-23 14:00

我来回答

3个回答

热心网友 时间:2022-05-02 05:01

我也是找的,希望帮到你。
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”)
  1) 一个对象作为函数参数,以值传递的方式传入函数体

  2) 一个对象作为函数返回值,以值传递的方式从函数返回
  3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化)
  当用引用变量做参数时,不调用拷贝构造函数,用传递引用的方式给函数传递一个对象的引用时,只传递了该对象的地址,系统消耗较小。在函数体内访问 形参,实际是访问了这个作为实参的对象。例如:void function(CTest & test);
  Java中的引用传递是指: 例如:void function(CTest test),没有&号
通常的原则是:①对于凡是包含动态分配成员或包含指针成员的类都应该提供拷贝构造函数;②在提供拷贝构造函数的同时,还应该考虑重载"="赋值操作符号。
具体过程:首先建立对象theObjtwo,并调用其构造函数,然后成员被复制初始化。
  其完成方式是内存拷贝,复制所有成员的值。完成后,theObjtwo.pBuffer==theObjone.pBuffer。
   即它们将指向同样的地方,指针虽然复制了,但所指向的空间并没有复制,而是由两个对象共用了。这样不符合要求,对象之间不独立了,并为空间的删除带来隐患。所以需要采用必要的手段来避免此类情况:可以在构造函数中添加操作来解决指针成员的这种问题。
  所以C++语法中除了提供缺省形式的构造函数外,还规范了另一种特殊的构造函数:拷贝构造函数,一种特殊的构造函数重载。上面的语句中,如果类中定义了拷贝构造函数,在对象复制初始化时,调用的将是拷贝构造函数,而不是缺省构造函数。在拷贝构造函数中,可以根据传入的变量,复制指针所指向的资源。
  拷贝构造函数的格式为:类名(const 类名& 对象名);//拷贝构造函数的原型,参数是常量对象的引用。由于拷贝构造函数的目的是成员复制,不应修改原对象,所以建议使用const关键字。
下面介绍拷贝构造函数的另一种调用:当对象直接作为参数传给函数时,函数将建立对象的临时拷贝,这个拷贝过程也将调用拷贝构造函数。
总结:当某对象是按值传递时(无论是作为函数参数,还是作为函数返回值),编译器都会先建立一个此对象的临时拷贝,而在建立该临时拷贝时就会调用类的拷贝构造函数。

拷贝构造函数的实现:

  类名::类名(类名&对象名)//拷贝构造函数的实现/定义

热心网友 时间:2022-05-02 06:19

java也会改变参数的值。可以实现cloneable试试。

热心网友 时间:2022-05-02 07:53

你想怎么拷贝?又有些什么副作用?追问之前写的c++ 副作用是说函数会改变原来传递参数的值。

追答传进去的是对像的引用,如果改变了对像里面的值,就会被改变,如果不想改变可以传新的对像进去,比如先克隆

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
若cpu一秒执行n次运算需耗能5w,那执行2n次运算要耗能是大于小于还是等于... 大神们,N5G跟N5W哪里不一样? 刚出生的婴儿会感冒吗 刚出生宝宝感冒的症状 怀庄永佳福代理,什么品牌白酒好呢? 做白酒品牌代理,有怀庄永佳福牌子怎么样? 怀庄永佳福白酒喝得人多吗?代理怎么样? 为什么很多女性都把男闺密当作结婚对象? 关于电影“罗生门”的问题 实际利率法是指什么 sql server 在函数内对带副作用的运算符 'INSERT' 的使用无效 福美多avs+地面数字电视机顶盒怎么用? 随机变量是什么? 那些不是随机变量 举一些例子 电视机用机顶盒怎么使用的? 关于函数传递有副作用参数的问题 scanf与getchar的副作用以及可以替代的函数 机顶盒怎么用,要接网线才能用吗? scala函数副作用如何理解 在c++语言中,如果函数非正常结束,有啥副作用。return 1和return –1啥意思 联通网络电视机顶盒怎么用? 函数的副作用和函数没有任何返回值有什么联系 C语言里的side effect是什么意思 全网通电视机顶盒怎么用? C语言中调用函数的副作用具体指啥? 手机充电,快充和正常充电哪个对电池寿命影响大? 苹果手机充电是用快充好还是普通的充电好? 教师资格证笔试有几次报名机会? 教师资格证什么时间报名? 手机反应慢是什么原因? 全国教师资格证网上报名入口 联通机顶盒怎么用 如何正确使用机顶盒 为什么打开Excel没有修改,退出时仍提示保存?? 智家小果机顶盒怎么用 为什么主函数和中断函数不能调用同一函数 跪求C++ 中“函数的副作用”是什么意思啊? 机顶盒该怎么使用? 请教:sql函数 传递参数给 top ,不能运行, tips:在函数内对带副作用的运算符 'EXECUTE STRING'的使用无效 机顶盒是什么。怎么用。谢谢 C# 中计算角度的三角函数时提示此表达式可导致副作用,将不会对它进行计算。 网络机顶盒怎么用? es6中箭头函数this指向理解? 函数式编程的特性 C语言中“语句”和“指令”有什么区别? 黑头怎么根除? 怎样去黑头最有效? 怎样有效去除黑头?? 怎样消除黑头 怎样除黑头 怎样祛除黑头?