C++ 关于复制构造函数

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

3个回答

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

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

1 默认的无参构造函数。

 Person xxx = new Person(); 

2 有参构造函数

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

3 复制构造函数

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

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

github_38964412
lynncatt 回复战在春秋: 谢谢!
接近 3 年之前 回复
fight_in_dl
战在春秋 回复lynncatt: 嗯,没事。问题解决了就行。
接近 3 年之前 回复
github_38964412
lynncatt 回复战在春秋: 谢谢!但是我貌似……手残采纳错了抱歉……
接近 3 年之前 回复
liuhannan111
HappyerMano 回复lynncatt: 根据你创建一个对象的方式来决定具体使用哪个构造函数,还是使用拷贝构造函数
接近 3 年之前 回复
fight_in_dl
战在春秋 一个题不至于要把c++基础全讲了吧.....呵呵,可以先结这个题吗,谢谢~~~
接近 3 年之前 回复
github_38964412
lynncatt 回复战在春秋: 哦明白了 我还想问一下下面的const和void分别是在干什么
接近 3 年之前 回复
fight_in_dl
战在春秋 答案中有示例代码。
接近 3 年之前 回复
fight_in_dl
战在春秋 嗯 ,提供了三种方式,可以根据需要选择使用哪一种
接近 3 年之前 回复
github_38964412
lynncatt 还是意思是说,它这里用三种方式创建了对象,需要用哪种根据用户需要自行调用其中一种?
接近 3 年之前 回复
github_38964412
lynncatt 为什么这里需要用到复制构造函数呀
接近 3 年之前 回复
 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);
liuhannan111
HappyerMano 回复HappyerMano: 有帮助,就采纳一下啊亲
接近 3 年之前 回复
liuhannan111
HappyerMano 回复lynncatt: 不客气
接近 3 年之前 回复
github_38964412
lynncatt 啊谢谢 你讲的很清楚
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐