Effective C++ P21 有个问题

御风天 2011-09-12 10:43:17

#include <iostream>
using namespace std;
class Text
{
char * ptext;
public:
Text(char * m)
{
ptext = m;
}
char & operator [] (int position) const
{
return ptext[position];
}
};

void main()
{
const Text a("Hello");
char * p = &a[0];
cout<< p <<endl;
}


这里重载了 【】 运算符,使其能 返回 char & 变量,但是main函数里char * p = & a[0];
好像用了两次 & 运算符 a[0] 返回的是char &,前面又用个 &,我哪里搞错了,知道的帮一下忙,谢谢!!!
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwer_boo 2011-09-12
  • 打赏
  • 举报
回复

我的输出是 hello
szqh97 2011-09-12
  • 打赏
  • 举报
回复
靠,我还以为飞雪又回来了呢
御风天 2011-09-12
  • 打赏
  • 举报
回复
知道是引用了,好久没看C++ 忘了,一时蒙了,至于一直去啃C++ primer ,烦人的细节也不见得会提高多少,适时的拿些 “小品”来品读,也不是不可,而且一本书也不是说全能读懂,才能看。看了也不是一次性都要看完(每节都不放过),但看了必定有益。
iamnobody 2011-09-12
  • 打赏
  • 举报
回复
char& 是数组元素的引用不是指针 。
另外顶一下5楼
cppresearcher 2011-09-12
  • 打赏
  • 举报
回复
返回的是个临时变量的引用,可能引起引用悬挂。
御风天 2011-09-12
  • 打赏
  • 举报
回复
不就是返回了 text【position】的副本吗? 即引用,然后取这个副本的地址给指针。
C++ primer 是看过,后面的章节比较吃力,一暑假没看过了,忘了很多。不去应用,看了也是忘掉。
qq120848369 2011-09-12
  • 打赏
  • 举报
回复
const函数竟然返回非const&,不好不好。
taodm 2011-09-12
  • 打赏
  • 举报
回复
楼主如果还不知道指针和引用,那看effective还太早了,还是找本c++ primer啃啃吧。
十八道胡同 2011-09-12
  • 打赏
  • 举报
回复
// v.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;
class Text
{
char * ptext;
public:
Text(char * m)
{
ptext = m;
}
char operator [] (int position) const
{
return ptext[position];
}
};

int _tmain(int argc, _TCHAR* argv[])
{
const Text a("Hello");
char p = a[0];
cout<<p<<endl;
return 0;
}

十八道胡同 2011-09-12
  • 打赏
  • 举报
回复
char & operator [] (int position) const
{
return ptext[position];
}

-》 char operator [] (int position) const
{
return ptext[position];
}

char * p = &a[0];-》 char p = a[0];
我认为应该是这样,试试看

65,210

社区成员

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

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