C++类中使用new及delete小例子(续)
在该示例中我们显式定义了复制构造函数来代替默认复制构造函数, 在该复制构造函数的函数体内, 不是再直接将源对象所申请空间的地址赋值给被初始化的对象, 而是自己独立申请一处内存后再将源对象的属性复制过来, 此时book1对象的 book_name 与 book2 对象的 book_name 就是指向两处不同的内存单元, 这样即便是源对象 book1 被销毁后被初始化的对象book2也不会再受到影响。
#include <iostream>
using namespace std;
class book
{
private:
char * book_name;
public:
book(const char * name)
{
cout << "create space\n";
book_name = new char [strlen(name) +1];
strcpy(book_name, name);
}
book(const book & b)
{
cout << "create space also\n";
book_name = new char [strlen(b.book_name) + 1];
strcpy(book_name, b.book_name);
}
~book()
{
cout << "delete space\n";
delete [] book_name;
}
void show_book()
{
cout << "book_name: " << book_name << endl;
}
};
int main()
{
book BOOK1("c++ primer plus");
book BOOK2(BOOK1);
BOOK1.show_book();
BOOK2.show_book();
return 0;
}
最新文章
- 【Java每日一题】20170104
- BZOJ4533 [BeiJing2014 WinterCamp] 数据
- hiho一下第二周 Trie树
- AP6181 正基 WIFI 模块
- 中石油—2的幂次方(power)
- PAT (Basic Level) Practise:1036. 跟奥巴马一起编程
- 解决IE6下Position:fixed问题(只用css)
- java保留两位小数的方法
- IDL实现 Modis经纬度查询、迅雷下载
- Servlet+Tomcat日志输出
- [ SSH框架 ] Hibernate框架学习之二
- 《前端之路》之 this 的使用技巧总结
- springboot springmvc拦截器 拦截POST、PUT、DELETE请求参数和响应数据,并记录操作日志
- 使用Badboy录制Web脚本 JMeter运行jmx脚本
- Win10连接远程桌面的时候提示您的凭证不工作该怎么办?
- “脚踢各大Python Web框架”,Sanic真有这能耐么?
- 【MySQL】【2】数字排序问题
- 【Unity】9.2 如何添加粒子组件
- spring mvc的@Transactional注解
- c#和java中封装字段的不同
热门文章
- 【UML】9种图+包图
- SPOJ - Distinct Substrings,求不同的字串个数!
- 九度oj 题目1214:丑数
- 【2018.10.10】[HNOI2008] GT考试(bzoj1009)
- 《Spring Security3》第四章第三部分翻译下(密码加salt)
- AtCoder Regular Contest 095E - Symmetric Grid
- JavaSE的static、final、abstract修饰符
- scrapy的allowed_domains设置含义
- SolidEdge如何为零件指定不同的颜色 给零件着色 给装配体着色
- ajax请求后台交互json示例