博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
析构函数 p157
阅读量:5157 次
发布时间:2019-06-13

本文共 2044 字,大约阅读时间需要 6 分钟。

析构函数

确保对象的各部分被正确的清除,及做一些用户指定的其他清理工作。

当对象超出它的作用域时,编译器将自动调用析构函数;手动用new在堆上分配的对象空间,需要调用'delete 对象地址'进行手动清除, delete 语句 先调用该对象的析构函数,然后释放内存

 

1 #include 
2 #include
3 4 using namespace std; 5 6 7 class Publisher 8 { 9 string name;10 string address;11 string telephone;12 13 public:14 15 Publisher(string name, string address, string telephone) : name(name), address(address), telephone(telephone) 16 {17 cout << "Publisher(string name, string address, string telephone)" << endl;18 }19 20 ~Publisher()21 {22 cout << "~Publisher()" << endl;23 }24 25 friend ostream& operator<<(ostream& os, const Publisher& p)26 {27 return os << "PublisherName: " << p.name << ", PublisherAddress: " << p.address << ", Publishertelephone: " << p.telephone;28 }29 30 };31 32 33 class Book34 {35 string name;36 string author;37 double price;38 Publisher* publisher;39 40 public:41 42 Book(string name, string author, double price, Publisher* pub) : name(name), author(author), price(price), publisher(pub)43 {44 cout << "Book(string name, string author, double price, Publisher publisher)" << endl;45 }46 47 ~Book()48 {49 cout << "~Book()" << endl;50 if (publisher != 0)51 {52 delete publisher;53 publisher = 0;54 cout << "delete publisher" << endl;55 } 56 57 }58 59 friend ostream& operator<<(ostream& os, const Book& b)60 {61 os << "-------- print Book ---------------" << endl;62 os << "BookName: " << b.name << ", BookAuthor: " << b.author << ", BookPrice: " << b.price << endl;;63 os << *b.publisher << endl;;64 return os;65 }66 67 };68 69 int main()70 {71 72 Publisher* pub = new Publisher("人民出版社", "北京市西城区", "021-2134343545");73 74 Book b1("算法精解", "Kyle Loudon", 56.2, pub);75 76 cout << b1 << endl;77 78 };

 

运行结果:

 

转载于:https://www.cnblogs.com/asnjudy/p/4604672.html

你可能感兴趣的文章
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>