首页 > 试题广场 >

下列情况中,哪一种情况不会调用拷贝构造函数 ( )

[单选题]
下列情况中,哪一种情况不会调用拷贝构造函数
  • 派生类对象去初始化基类对象时
  • 函数返回值是类对象,函数返回时
  • 函数返回值是类对象,函数调用时
  • 类对象赋值给该类的另一个对象时
拷贝构造函数只有在以下三种情况下才会被调用:
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化)。
发表于 2017-07-18 08:27:13 回复(0)
java好像没有拷贝构造一说?
package cn.edu.jxnu.other;

public class Base implements Cloneable {

    @Override
    public Object clone() {
        Base o = null;
        try {
            o = (Base) super.clone();
            System.out.println("正在调用基类的拷贝");// 1
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return o;
    }

    public static void main(String[] args) {
        @SuppressWarnings("unused")
        Base base = new Children();
        //Object object = base.clone();// 打印1,2
        Children c1 = new Children();
        @SuppressWarnings("unused")
        Children c2 = new Children();
        c2=c1;
    }
}

class Children extends Base {

    @Override
    public Object clone() {
        Children o = null;
        o = (Children) super.clone();
        System.out.println("正在调用子类的拷贝");// 2
        return o;
    }
}

发表于 2018-03-23 22:11:00 回复(0)
很多人说是选D,我做了一下测试,发现使用我的方法,在使用派生类对象初始化基类对象时,确实调用了拷贝构造函数,但是在赋值的时候却没有调用,所以D为正确的。
发表于 2017-08-30 21:52:41 回复(0)
这个题目应该选D选项才对。但凡类对象去初始化,貌似都要调用构造器。
发表于 2017-07-17 22:41:05 回复(0)
这题答案错了吧,应该是4d吧,调用赋值函数啊
发表于 2017-06-22 18:08:50 回复(0)