一个类模板和类运算符重载的小程序
来源:互联网 发布:smtp.qq.com 端口 编辑:程序博客网 时间:2024/05/16 10:10
#include <iostream>
#include <string>
using namespace std;
class CBook
{
public:
CBook(string name, int n=0) : m_strName(name), m_nIndex(n) {}
void SetIndex(int n)
{
m_nIndex = n;
}
int GetIndex()
{
return m_nIndex;
}
public:
int m_nIndex;
private:
string m_strName;
};
template<class T>
class ref
{
public:
ref(T *p) : ptr(p) {}
T * operator++() { return ++ptr; }
T & operator*() { return *ptr; }
T * operator->() { return ptr; }
T & incr()
{
++ptr->m_nIndex;
return (*ptr);
}
private:
T *ptr;
};
int main()
{
CBook book1("want", 100);
ref<CBook> rb(&book1);
cout << "Id : " << rb->GetIndex() << endl;
rb.incr();
cout << "Id : " << rb->GetIndex() << endl;
return 0;
}
#include <string>
using namespace std;
class CBook
{
public:
CBook(string name, int n=0) : m_strName(name), m_nIndex(n) {}
void SetIndex(int n)
{
m_nIndex = n;
}
int GetIndex()
{
return m_nIndex;
}
public:
int m_nIndex;
private:
string m_strName;
};
template<class T>
class ref
{
public:
ref(T *p) : ptr(p) {}
T * operator++() { return ++ptr; }
T & operator*() { return *ptr; }
T * operator->() { return ptr; }
T & incr()
{
++ptr->m_nIndex;
return (*ptr);
}
private:
T *ptr;
};
int main()
{
CBook book1("want", 100);
ref<CBook> rb(&book1);
cout << "Id : " << rb->GetIndex() << endl;
rb.incr();
cout << "Id : " << rb->GetIndex() << endl;
return 0;
}
- 一个类模板和类运算符重载的小程序
- 一个小程序看运算符重载的方法
- 运算符重载小程序(对Data类的++,<<,>>的重载)
- 运算符重载和模板的使用
- c++模板类下标运算符重载
- 矩阵加减【运算符重载】【类模板】
- C++运算符重载小程序
- 运算符重载小程序1
- 运算符重载小程序2
- STL库中简单的list类模板示例和一个小的延时程序
- & 运算符重载以后 一个有趣的程序
- 一个有趣的程序:C++运算符重载中的“指鹿为马”
- [ ]运算符重载和函数模板练习
- C++运算符重载和模板
- 模板类友元函数和运算符重载
- c++中,一个没有拷贝构造函数和重载=运算符的string类,
- 字符串类中运算符重载出现的一个问题
- 用一个程序总结运算符重载
- 系统服务显示EXE程序(C#)
- 正则表达式的学习与小结
- Android在代码中如何使用SD卡
- MongoDB 学习 第五节 主从复制
- Layout布局文件中通过include来包含其他布局文件
- 一个类模板和类运算符重载的小程序
- A categorized list of Windows CMD commands
- 使用ListView 显示数据
- ModelAndView 总结
- PHP, Perl, Python, Ruby语言对比
- OS_MUTEX.C
- T-SQL alter
- MongoDB 学习 第六节 分片技术
- Android用户界面设计之创建列表视图程序