首页 > 其他 > 详细

析构函数 p157

时间:2015-06-27 21:23:52      阅读:136      评论:0      收藏:0      [点我收藏+]

析构函数

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

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

 

 1 #include <iostream>
 2 #include <string>
 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 Book
34 {
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 };

 

运行结果:
技术分享

 

析构函数 p157

原文:http://www.cnblogs.com/asnjudy/p/4604672.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!