- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C 暑期实践课程第09讲.ppt.ppt
* * * * * * * Tsinghua University, lily * 虚析构函数 何时需要虚析构函数? 需要通过基类指针删除派生类对象。 派生类的析构函数中有重要功能必须执行。 需要将基类的析构函数成为虚拟的。 * Tsinghua University, lily * #include iostream using namespace std; class X {public: X() { p = new int[3]; cout X(). ; } //申请动态内存 ~X() { delete [] p; cout ~X().\n; } //释放动态内存 private: int* p; }; class Y : public X {public: Y() { q = new int[1024]; cout Y():T::q = q . ; } //申请动态内存 ~Y() { delete [] q; cout ~Y(). ; } //释放动态内存 private: int* q; }; * Tsinghua University, lily * int main() { for (int i = 0; i 8; i++) { X* r = new Y; //重复创建动态对象 delete r; //重复释放动态对象 } } X(). Y():T::q = 00342AA0. ~X(). X(). Y():T::q = 00343AD8. ~X(). X(). Y():T::q = 00344B10. ~X(). X(). Y():T::q = 00345B48. ~X(). X(). Y():T::q = 00346B80. ~X(). X(). Y():T::q = 00347BB8. ~X(). X(). Y():T::q = 00348BF0. ~X(). X(). Y():T::q = 00349C28. ~X(). * Tsinghua University, lily * #include iostream using namespace std; class X {public: X() { p = new int[3]; cout X(). ; } //申请动态内存 virtual ~X() { delete [] p; cout ~X().\n; }//释放动态内存 private: int* p; }; class Y : public X {public: Y() { q = new int[1024]; cout Y():T::q = q . ; } //申请动态内存 ~Y() { delete [] q; cout ~Y(). ; } //释放动态内存 private: int* q; }; * Tsinghua University, lily * int main() { for (int i = 0; i 8; i++) { X* r = new Y; //重复创建动态对象 delete r; //重复释放动态对象 } } X(). Y():T::q = 00342AA0. ~Y(). ~X(). X(). Y():T::q = 00342AA0. ~Y(). ~X(). X(). Y():T::q = 00342AA0. ~Y(). ~X(). X(). Y():T::q = 00342AA0. ~Y(). ~X(). X(). Y():T::q = 00342AA0. ~Y(). ~X(). X(). Y():T::q = 00342AA0. ~Y(). ~X(). X(). Y():T::q = 00342AA0. ~Y(). ~X(). X(). Y():T::q = 00342AA0. ~Y(). ~X(). * Tsinghua University, lily * 抽象类 带有纯虚函数的类称为抽象类: class 类名 { virtual 类型 函数名(参数表)=0; //纯虚函数 ...} 基类中的纯虚函数是为了设计的目的而声明的,没有实现代码,抽象类是为后继所有派生类设计的统一抽象接口。 * Tsinghua University, lily * 抽象类使用注意点 作用 抽象类为抽象和设计的目的而声明。 对于暂时无法实现的函数,可以声明
文档评论(0)