【c++】浅拷贝成功__count解决
2015-06-05 18:01
441 查看
#include <iostream> #include <string.h> using namespace std; class String { public: String(const char *str = " ") { m_data = new char[strlen(str) + 1]; strcpy(m_data, str); count++; } String(const String &s) { m_data = s.m_data; count++; } ~String() { //当指针释放到只剩一个的时候,再释放就不会崩溃了 if (--count == 1) { delete[]m_data; } } public: void print() { cout << m_data << endl; } private: char *m_data; static int count;//定义一个计数器,表示当前空间上有多少个指针指向 }; int String::count = 0; int main() { String s("hello"); s.print(); String s1 = s; s1.print(); return 0; }
相关文章推荐
- C++的字符串分割函数
- c++11新特性for循环
- Python C++扩展
- c++类中特殊数据类型成员变量的初始化
- C语言字符数组的初始化
- C++中“已经在 test.obj 中定义”的错误
- n阶多项式拟合与n阶矩阵求逆的C语言实现
- 设计模式C++描述----11.组合(Composite)模式
- freopen - C/C++文件输入输出利器
- Cppcheck
- efficient c++,单线程内存池
- C++对象模型:第2章(1)-构造函数
- 【c++】异常安全深赋值
- 《爱编程,爱c++第十期-第三章-c++简单程序设计》
- ZH奶酪:C语言中malloc()和free()函数解析
- 归并排序
- 【C++】智能指针auto_ptr的简单实现
- 装饰者模式及C++ 2
- 如何在C语言中巧用正则表达式
- C++ new operator, delete operator, operator new, operator delete, new placement