运算符问题 运算符问题 运算符问题 运算符问题 运算符问题 运算符问题

lovejjst 2011-05-19 08:02:48

T& operator*() { return *_p; } //这一句是什么意思,特别是operator*()是什么意思



char & operator[](unsigned short offset);
//重载下标运算符..但是我还是不懂,我希望一个非常详细的说明 ,最好再来一个代码更好理解.谢谢大家..


char operator[](unsigned short offset)const

//和char & operator[](unsigned short offset)有什么区别,区别何在,最好也说明加一个代码,方便我理解.拜托各位好人了,谢谢..
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
老邓 2011-05-19
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>

template <typename T>
class SmartPtr
{
public:
SmartPtr(T* p) : _p(p) {}
~SmartPtr() { delete _p; }
T* operator->() { return _p; }
T& operator*() { return *_p; }
private:
T* _p;
};

int main()
{
SmartPtr<std::string> sp(new std::string);
sp->append("Hello World!");
std::cout << *sp << std::endl;
return 0;
}
無_1024 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luciferisnotsatan 的回复:]
1 重载解引用运算符。这里*ptr就是*(ptr->_p)
2,3是重载两个版本的下标运算符
[/Quote]
+1
就第一个是解引用
luciferisnotsatan 2011-05-19
  • 打赏
  • 举报
回复
1 重载解引用运算符。这里*ptr就是*(ptr->_p)
2,3是重载两个版本的下标运算符
ryfdizuo 2011-05-19
  • 打赏
  • 举报
回复
1,是*解引用运算符,
int i(5);
int *p = &i;
cout << *p; // *解引用

2,3是const重载,前者可以当左值,后者不可以修改。
vector<char> vec; vec.resize(4);
vec[0] = '0'; // char & operator[] 左值赋值
cout << vec[0]; //const char operator[] (offset) const
碎炎 2011-05-19
  • 打赏
  • 举报
回复
T& operator*() { return *_p; } //这一句是什么意思,特别是operator*()是什么意思



重载了*操作符 而且是接受一个参数的 也就是类似于解除引用的操作符了



C/C++ code
char & operator[](unsigned short offset);

//重载下标运算符..但是我还是不懂,我希望一个非常详细的说明 ,最好再来一个代码更好理解.谢谢大家..
T[offset]
C/C++ code
char operator[](unsigned short offset)const


//和char & operator[](unsigned short offset)有什么区别,区别何在,最好也说明加一个代码,方便我理解.拜托各位好人了,谢谢..
该函数不修改this的成员值

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧