c++/对*和->的重载
2016-05-09 09:52
232 查看
#include <iostream>
using namespace std;
struct Date
{
int y;
int m;
int d;
};
class DatePtr
{
Date* ptr;
public:
//如果创建DataPtr对象时使用参数,那么传进去的指针也就成为了DataPtr的成员ptr的值了
DatePtr(Date* ptr = NULL):ptr(ptr)
{
}
//重载了*号
Date& operator*()
{
return *ptr; //取了ptr的内容后将其返回
}
//重载了箭头号
Date* operator->()
{
return ptr;
}
//重载了前加加号
DatePtr& operator++()
{
ptr++;
return *this;
}
//重载了中括号
Date& operator[](int index)
{
return *(ptr+index);
}
};
int main()
{
//要多多见识一下这些赋值的方式,蛋疼的考试
//struct
Date d = {2012,9,27};
//DatePtr p(&d);
//class
DatePtr p = &d;
(*p).y = 2013; //相当于p-> = 2013;,但又能这么写 p.operator*().y = 2013
p->m = 10; //p.operator->()->m = 10;
cout << d.y << '-' << d.m << '-' << d.d << endl;
Date ds[3] = {
{2012,9,27},
{2012,9,30},
{2012,12,21}
};
//赋的其实是地址
DatePtr p2 = ds;
for (int i = 0; i<3; i++)
{
// cout << p2->y << '-' << p2->m
// << '-' << p2->d << endl;
// ++p2;
cout << p2[i].y << '-' << p2[i].m
<< '-' << p2[i].d << endl;
}
}
using namespace std;
struct Date
{
int y;
int m;
int d;
};
class DatePtr
{
Date* ptr;
public:
//如果创建DataPtr对象时使用参数,那么传进去的指针也就成为了DataPtr的成员ptr的值了
DatePtr(Date* ptr = NULL):ptr(ptr)
{
}
//重载了*号
Date& operator*()
{
return *ptr; //取了ptr的内容后将其返回
}
//重载了箭头号
Date* operator->()
{
return ptr;
}
//重载了前加加号
DatePtr& operator++()
{
ptr++;
return *this;
}
//重载了中括号
Date& operator[](int index)
{
return *(ptr+index);
}
};
int main()
{
//要多多见识一下这些赋值的方式,蛋疼的考试
//struct
Date d = {2012,9,27};
//DatePtr p(&d);
//class
DatePtr p = &d;
(*p).y = 2013; //相当于p-> = 2013;,但又能这么写 p.operator*().y = 2013
p->m = 10; //p.operator->()->m = 10;
cout << d.y << '-' << d.m << '-' << d.d << endl;
Date ds[3] = {
{2012,9,27},
{2012,9,30},
{2012,12,21}
};
//赋的其实是地址
DatePtr p2 = ds;
for (int i = 0; i<3; i++)
{
// cout << p2->y << '-' << p2->m
// << '-' << p2->d << endl;
// ++p2;
cout << p2[i].y << '-' << p2[i].m
<< '-' << p2[i].d << endl;
}
}
相关文章推荐
- 替换字符串中的空格(C++/Java实现)
- Windows C++程序如何不显示黑色的 command 窗口
- 如何在一个已有的C++工程中加入cuda程序
- 《C++精英内参-程序员高效指南》-8杂乱信息的处理
- 《C++精英内参-程序员高效指南》-7硬盘的选择
- c++实验5—数组分离
- C与C++程序的启动代码(startup)
- c语言怎么获取数组的长度
- 1、C到C++安全性增强
- C++ 之 重载赋值操作符
- C++实验5-求和
- c++作业5
- Transformations
- C++第5次作业
- c++作业五—数组
- c++第5次作业
- c++上机实验5-项目1-数组分离
- C++操作mysql相关函数
- C++作业5
- C++第五次作业