为了账号安全,请及时绑定邮箱和手机立即绑定

关于拷贝构造函数的条件下,某类对象调用get函数的问题

如下…我在用拷贝构造函数的时候,发现get到的值不是我输入的值…

这是拷贝构造函数和默认构造函数的定义:

586317350001770505000096.jpg


声明和结果:

586317350001d0df05000162.jpg


正在回答

3 回答

拷贝构造函数只有输出,并没有给对象的成员变量赋值

0 回复 有任何疑惑可以回复我~

因为你就没有定义拷贝函数啊,你定义的那两个函数不过是,一个为无参构造函数,另一个为有参数构造函数。

0 回复 有任何疑惑可以回复我~

首先我也是初学者,我猜测·在默认拷贝构造函数里面你只是输出一个内容,表明是复制的;如果要真正达到实际的复制,因为在拷贝构造函数里面写:tea.m_strName=this.m_strName;tea.m_strAge=this.m_strAge;这样想默认构造函数对比,默认构造函数只是代表生成对象,但是值还是要自己后面赋值。

0 回复 有任何疑惑可以回复我~
#1

壹叶随心

简单来说:默认拷贝构造函数只是代表拷贝了一个同类型的对象,但是值并没有赋值。
2016-12-29 回复 有任何疑惑可以回复我~
#2

壹叶随心

class Student { public: Student(string _name) { cout << "Student()" << endl; m_strName = _name; } Student(Student&tea) { tea.setName(this->getName()); } void setName(string value) { m_strName = value; } string getName() { return m_strName; } private: string m_strName; };
2016-12-29 回复 有任何疑惑可以回复我~
#3

壹叶随心

int main() { Student *stu = new Student("Imooc"); Student *copy = stu; cout << copy->getName() << endl; }
2016-12-29 回复 有任何疑惑可以回复我~
#4

Tesjunma 提问者 回复 壹叶随心

哦哦哦明白了。今天刚刚学到浅拷贝和深拷贝,懂了~蟹蟹
2016-12-29 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

关于拷贝构造函数的条件下,某类对象调用get函数的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信