c++与JAVA参数比较

c++与JAVA参数比较

  在C++和java中对象都可以做参数,但是两者之间的差别却比较微妙。C++中对象作参数采用的是“传值调用”,当实参和形参相结合是,调用对象的拷贝构造函数。如果没有显示定义拷贝构造函数,将自动调用默认拷贝构造函数,它的功能是将实参中的对象原样的拷贝对形参中(但这样就出现了深拷贝和浅拷贝的问题,不再详述)。采用这种方式对形参的任何改变都不会影响实参。


 
  在Java中对象作参数,形参被初始化为实参的一个拷贝,既对实参对象的引用。对形参的操作会影响到实参。看起来java中采用的是“引用调用”。其实并非如此,java本质上采用的都是“传值调用”,并不存在“引用调用”的概念。那C++和java中为什么会产生如此差别?这是因为C++和Java中对象名的含义是不同的。C++中“类”和“对象”的关系可以类比“类型”和“变量”之间的关系。对象在定义的时候即分配了内存空间,它是实实在在存在的。而java中对象定义时只是定义了“对象变量”,它只是指向一个对象,只有当使用new操作符时才会构造一个对象。


 
  可见,Java中对象的名字更像C++中指向对象的指针。Java采用的也是“传值调用”,不过实参、形参结合时,拷贝的是对象的指针罢了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值