课程
/后端开发
/C++
/C++远征之继承篇
请问一下 在test1中 如果实例化对象Person对象 为什么不去调用Person 的默认构造函数 而只是在销毁的时候调用 析构函数
2017-11-18
源自:C++远征之继承篇 4-6
正在回答
借二楼的理论实践一下:
Person.h中加入
Person(const Person &p);
Person.cpp中加入
Person::Person(const Person &p) { m_strName = p.m_strName; cout << "Person(const Person &p)" << endl; }
然后执行便是
验证了二楼所说,确实是因为调用了拷贝析构函数而不是析构函数
调用了构造函数啊,只不过调用的是拷贝构造函数,实参传值给形参就是一个拷贝的过程,而拷贝构造函数都没写内容,所以当然不显示出来,但是实际上是调用了的
首先,临时变量是会调用构造函数的,这是初始化对象必须进行的。
其次,临时变量是栈对象,使用完毕后会被内存自动回收,而删除对象时会调用析构函数,所以会自动调用析构函数啦
Hurricane_mwb 提问者
qq_慕前端0595576 回复 Hurricane_mwb 提问者
举报
继承,C++面向对象三大特征之一,通过编码实践方式讲解到操作层面
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号