C++智能指针
来源:互联网 发布:girl.cn 域名 价格 编辑:程序博客网 时间:2024/05/24 16:13
每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;调用析构函数时,析构函数减少引用计数(如果引用计数减至0,则删除基础对象)。
#include <iostream>
#include <stdio.h>#include <new>
using namespace std;
class U_Ptr
{
private:
char *p;
size_t count;
public:
U_Ptr(char *ptr,int val=1):count(val)
{
p=(char *)malloc(strlen(ptr)+1);
strcpy(p,ptr);
}
friend class HasPtr;
~U_Ptr()
{
delete p;
}
char &operator*()
{
return *p;
}
};
class HasPtr
{
public:
HasPtr(char *p):ptr(new U_Ptr(p))
{
}
HasPtr(const HasPtr& orig):ptr(orig.ptr)
{
++ptr->count;
}
HasPtr &operator=(const HasPtr&);
~HasPtr()
{
if (--ptr->count == 0)
{
ptr->~U_Ptr();
}
}
U_Ptr &operator *()
{
return *ptr;
}
U_Ptr* operator &()
{
return ptr;
}
private:
U_Ptr *ptr;
};
void main()
{
char *a ="hdsjhafjk";
HasPtr p(a);
HasPtr b(p);
printf("%s\n",*p);
}
这个是我写的一个职能指针的简单例子,应用的是简单的引用计数法!在网上看了一点资料,但是把别人的代码敲出来总是有点问题,所以就自己写了一个简单例子!希望能给有用的朋友提供一点帮助!
0 0
- c++:智能指针
- C++:智能指针
- 【C++】智能指针
- 【C++】智能指针
- C++PJ智能指针
- 【c++】智能指针
- 【C++】智能指针auto_ptr
- C++,智能指针
- C++,boost智能指针
- 智能指针模拟C
- [C++]智能指针
- 【C++】 浅析智能指针
- C++_智能指针
- C++:初识智能指针
- C++::智能指针
- 【C++】智能指针
- c智能指针:unique_ptr
- 【C++】智能指针
- 程序员练级之路 (作者:陈皓)
- uva 408(数学)
- C#hotmail自动接收邮件
- 编程算法 - 背包问题(记忆化搜索) 代码(C)
- 主成分分析(PCA)
- C++智能指针
- linux下mysql的root密码忘记解决方案
- linux grep命令详解
- Ubuntu下su:authentication failure的解决办法
- hdu2821
- 大数据基础概论
- HEVC ME之 SAD分布图示意
- mappingDirectoryLocations
- 【华为oj2041】n个苹果放到m个盘子里