operator* operator-> 操作符的使用
来源:互联网 发布:三维教学动画软件 编辑:程序博客网 时间:2024/06/05 09:11
从学习使用C、C++以来,对于操作符的重载的问题一直就是不理解,究其根源编译器是怎么处理这些事情的呢?下面重现以下场
////////////////////////////////////////////////////////////////////////////class CNoTrackObject{};class CThreadLocalObject{public:CNoTrackObject* GetData(CNoTrackObject* (*pfnCreateObject)()){CNoTrackObject* pValue = (*pfnCreateObject)();return pValue;}~CThreadLocalObject(){}};template<class TYPE>class CThreadLocal : public CThreadLocalObject{public:TYPE* GetData(){TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject);return pData;}operator TYPE*(){return GetData();}TYPE* operator->(){return GetData();}public:static CNoTrackObject* CreateObject(){ return new TYPE;}};#define THREAD_LOCAL(class_name, ident_name) CThreadLocal<class_name> ident_name;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // // // // 上面的代码是框架,下面的代码是使用 // // // // // // // // // // // // // // // // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////struct CMyThreadData : public CNoTrackObject{int nSomeData;};THREAD_LOCAL(CMyThreadData, g_myThreadData)void main(){CMyThreadData *p=g_myThreadData;}
static CNoTrackObject* CreateObject()
后来发现上面的代码有点冗余,下面贴上一个简单、精炼点儿的
class Base{public:Base* GetData(Base* (*pfnCreateObject)()){Base* pData = (*pfnCreateObject)();return pData;}operator Base*(){return GetData(&CreateObject);}Base* operator->(){return GetData(&CreateObject);}public:static Base* CreateObject(){ return new Base;}};Base g_Base;void main(){Base *q=g_Base;}
0 0
- operator* operator-> 操作符的使用
- boost的operator操作符
- C++ 关键字 operator 重载操作符的使用
- C++ 操作符重载 operator = 、operator <
- C++ 操作符重载 operator = 、operator <
- 重载数组下标操作符,使用operator
- 重载数组下标操作符,使用operator
- operator操作符
- operator 操作符重载
- 操作符(operator)
- VEX Operator(操作符)
- 重载operator操作符
- j2ee Operator 操作符
- C++操作符operator的另一种用法
- operator= 复制操作符的意外
- new操作符(new operator) 和 new操作(operator new)的区别
- 运算符重载 编程题#3(专项课程3;重载:* operator, & operator=, & operator(); 函数 memcpy 的使用)
- operator C++ 操作符重载
- UVa 1597 - Searching the Web
- android SwipeRefreshLayout下拉刷新实现
- cocos2dx:ndk编译加入eclipse
- Struts2Mvc验证码
- BZOJ1798 维护序列seq
- operator* operator-> 操作符的使用
- 判断整数是奇数还是偶数
- 用REMASTERSYS定制自己的UBUNTU安装光盘
- wince下ini文件操作
- Fragment的使用总结和实例详解
- SSH(二):框架整合
- 黑马程序员-十道测试题
- 创业者的新春礼包—优秀免费资源300+
- Java分布式应用