请C++ 高手帮帮解释和修改下

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:30:55
一、
#include <iostream.h>
#include <string.h>
//using namespace std;
class test
{
public:
char* str;
test( char* );
friend test operator + (test&,test&);

void display()
{
cout << str << endl;
}
};

test::test( char* c)
{
str = c;
}

test operator +(test& s1,test& s2)
{
char strs[80];
for( int i = 0; s1.str[i] != '\0'; i++)
strs[i] = s1.str[i];
for( int j = 0; s2.str[j] != '\0'; j++)
strs[i++] = s2.str[j];
strs[i] = '\0';
char* p;
p = strs;
test temp( p );
cout << temp.str << endl;
return temp;
}

int main()
{
test d1("as");
test d2("df1235");
test d3 = d1 + d2;
cout << d3.str<< endl;
return 0;
}

程序运行后为什么d3.str和temp.str的

两个头文件是不一样的。具体参看include文件夹下面的文件
#include <iostream>
using namespace std;
class test;
test operator+(test&, test&);
class test
{
public:
test( char d);
~test();
friend test operator + ( test&, test&);
private:
char str;
};
int main()
{
return 0;
}
可以通过编译
#include <iostream.h>
#include <string.h>
//using namespace std;
class test
{
public:
char* str;
test( char* );
friend test operator + (test&,test&);

void display()
{
cout << str << endl;
}
};

test::test( char* c)
{
str = c;
}

test operator +(test& s1,test& s2)
{
char strs[80];

int i;
for( i = 0; s1.str[i] != '\0'; i++)
strs[i] = s1.str[i];
strs[i++] = NULL;
for( int j = 0; s2.str[j] != '\0'; j++)
s