| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:关于“&”的使用问题
只看楼主 加入收藏
LJCX
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-6
收藏
 问题点数:0 回复次数:2 
关于“&”的使用问题
请大家看一下下面这段代码
# include <iostream>
# include <string>
using namespace std;

class myclass
{
  char *p;
public:
  myclass (char *pn)
{
  p = new char[strlen(pn)+1];            // 请问,这个地方为什么需要 +1 ?
  strcpy(p,pn);
}
 ~myclass() { delete p; }
 myclass &operator = (myclass &s)  // 这里是重载赋值运算符,那么蓝色的2个 & 分别起什么作用啊?
{
  delete p;
  p = new char[strlen(s.p)+1];
  strcpy(p,s.p);
  return *this;
}
 void display() {cout<<p<<endl;}
}

void main()
{
  myclass s1("first object");
  myclass s2("second object");
  s2 = s1;
  cout<<"s1 *p=";
  s1.display();
  cout<<"s2 *p=";
  s2.display();
}
搜索更多相关主题的帖子: 重载 
2008-11-25 18:22
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
引用,是对你要操作的数据起别名...

学习需要安静。。海盗要重新来过。。
2008-11-25 18:40
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
回答问题1:因为字符串的结尾含有一个结尾符'\0',如果不+1的话就无法存放这个字符串了。(参考《易学C++》第7章字符串的存储)
回答问题2:&表示引用操作,左侧的&表示返回的也是一个引用,这使得返回值能够作为一个左值,或减少不必要的传递。右侧的&表示参数是一个引用,减少不必要的传递。
2008-11-25 20:06
快速回复:关于“&”的使用问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014449 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved