打印

运算符重载问题

[复制链接]
1050|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-5-30 19:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[code=C/C++][/code]
#include <iostream.h>
#include <string.h>
#include <stdio.h>
class string
{
char *s;
public:
string()
{
char ss[10];
cin>>ss;
s=new char[strlen(ss)+1];
strcpy(s,ss)
}
string(string& ss)
{
s=new char[strlen(ss.s)+1];
strcpy(s,ss.s);
}
~string()
{
delete[]s;
}
char *getstring()
{
return s;
}
void displaystring()
{
cout<<s<<endl;
}
string operator + (string s2) //隐式调用s1+s2
{
char *t=s; //将字符指针s1的地址附给t,找这么一个传递作用的t有必要么???
unsigned int j=strlen(s);
s=new char[j+strlen[s2.getstring())+1]; //将字符串s1和s2的大小之和给s
for(unsigned int i=0;i<=j;i++) //将字符串s1的内容附给新的s,问题是,
*(s+i)=*(t+i); // *(s+i)=*(t+i) 是什么意思?加入*号说明为内容,而非地址,t+i是什么?s+i是什么?
for(i=0;i<=strlen(s2.getstring());i++) //这句应该是把s2填入s,问题:s2.getstring()调用的是字符串内容吧?
*(s+j+i)=*(s2.getstring()+i); //为什么内容+i,另外s+j+i是什么????
delete []t;
return *this;
}

相关帖子

沙发
秋天落叶| | 2012-5-30 19:10 | 只看该作者
*(t+i)解引用后赋值

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝