github_38964412
lynncatt
采纳率83.3%
2017-06-29 10:00

C++ 关于复制构造函数

图片说明题目是这样的:【定义一个基类Person,从它派生出Student类和Worker类,再由Student类和Worker类共同派生出WorkerStu。类Person的属性有姓名、年龄、性别,操作有设置姓名、设置年龄、设置性别和显示信息等。类Student增加专业、学号属性及相应的操作。类Worker新增部门属性及相应操作。在主函数中声明一个WorkerStu最远派生类的对象,显示相关信息。要求:类的定义、类的实现以及类的使用文件以多文件组织。】
但是已然卡在第一个基类。这段代码是stackflow上看到的。不明白为什么要用到复制构造函数。以及图片中注释处的一个问题。谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • github_38964412 lynncatt 4年前

    还是意思是说,它这里用三种方式创建了对象,需要用哪种根据用户需要自行调用其中一种?

    点赞 评论 复制链接分享
  • liuhannan111 HappyerMano 4年前
     Person\* xxx = new Person(); 
    

    首先 new Person 会分配内存空间,然后调用Person() 构造函数,对这段分配的内存进行初始化。上面这段代码,就会调用无参的构造函数,然后会对name,age 和 gender 这三个变量如下进行赋值。

    Person()
    {
      name= "";
      age = 0;
      gender = ""
    }
    
     Person xxx = new Person("john",36,"man");
    

    这种方式同样,只不过会调用第二个构造函数。会根据参数对三个变量进行初始化话。

    拷贝(复制)构造函数一般是在用一个对象去初始化或者赋值给另一个对象的时候调用

    如:

     Person xxx = new Person();
     Person other = xxx;
     Person other1(xxx);
     Person other2 = new Person(xxx);
    
    点赞 1 评论 复制链接分享
  • fight_in_dl 战在春秋 4年前

    从上到下分别是,适用于不同的创建新对象的方式。

    1 默认的无参构造函数。

     Person xxx = new Person(); 
    

    2 有参构造函数

      Person xxx = new Person("john",36,"man");
    

    3 复制构造函数

      Person xxx = new Person();
        Person other = xxx;
    

    如果对您有帮助,请采纳答案好吗,谢谢!

    点赞 2 评论 复制链接分享

为你推荐