标题:帮忙修改一下C++程序
只看楼主
yjbgwxf2008
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-11-4
 问题点数:0 回复次数:20 
帮忙修改一下C++程序
#include<iostream.h>
#include<string.h>
class jia
{
public:
   jia(char stl[5]);
   jia operator+(jia );
   void show();
 private:
    char str[5];
};
jia::jia(char stl[5])
{
    strcpy(str,stl);
}
jia jia::operator+(jia)
{
    jia A,B;
    return strcat(A.str,B.str);

}
void jia::show()
{
    cout<<str<<endl;
}
void main()
{
    jia A="abcd";
    jia B="efgh";
    A.show();
    B.show();
    (A+B).show();
}
搜索更多相关主题的帖子: void private include public return 
2008-03-21 23:30
zjl138
Rank: 1
等 级:新手上路
威 望:1
帖 子:788
专家分:0
注 册:2007-11-12
得分:0 
jia(char stl[5]);
jia::jia(char stl[5])
这两句中的stl[5]都只是一个值,这不是你想要的吧!
试改成jia(char *str)试一下,两处都要改!

i like linux...
2008-03-21 23:37
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#include<iostream.h>
#include<string.h>
class jia
{
public:
   jia(char stl[]);
   jia* operator +(jia &a );
   void show();
private:
    char str[50];
};
jia::jia(char stl[])
{
    strcpy(str,stl);
};
jia* jia::operator +(jia& a)
{
    //jia A,B;
    return new jia(strcat(this->str,a.str));

}
void jia::show()
{
    cout<<str<<endl;
}
void main()
{
    jia A="abcd";
    jia B="efgh";
    jia *c=A+B;
    A.show();
    B.show();
    c->show();
}

学习需要安静。。海盗要重新来过。。
2008-03-21 23:46
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#include<iostream.h>
#include<string.h>
class jia
{
public:
   jia(char stl[]);
   jia& operator +(jia &a );
   void show();
private:
    char str[50];
};
jia::jia(char stl[])
{
    strcpy(str,stl);
};
jia& jia::operator +(jia& a)
{

    return jia(strcat(this->str,a.str));

}
void jia::show()
{
    cout<<str<<endl;
}
void main()
{
    jia A="abcd";
    jia B="efgh";
    jia c=A+B;
    A.show();
    B.show();
    c.show();
}

学习需要安静。。海盗要重新来过。。
2008-03-22 09:05
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
jia(char stl[5]);中的stl[5]和stl[]是否相同?
jia* jia::operator +(jia& a)
{
    //jia A,B;
    return new jia(strcat(this->str,a.str));中的new jia(strcat(this->str,a.str)不是很懂
是动态分配吗? this->str 指的是什么?
2008-03-22 10:11
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
指代自己...其实可以把A+B这样理解..A找到自己的成员函数...B是参数..那么*this就是代的是自己...

学习需要安静。。海盗要重新来过。。
2008-03-22 10:39
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
就是说*this指代的是B吗 实在不好意思 对*this 还是 不怎么懂
2008-03-22 10:54
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
带A...B是参数.....

学习需要安静。。海盗要重新来过。。
2008-03-22 11:01
handongxue
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-3-25
得分:0 
+操作符重载错误,修改后如下:
#include<iostream>
#include<cstring>
using namespace std;


class jia
{
public:
   jia(char stl[]="");
   jia operator+(const jia &A);
   void show();
private:
    char str[15];
};
jia::jia(char stl[])
{
    strcpy(str,stl);
}
jia jia::operator+(const jia &A)
{
    jia B(str);strcat(B.str,A.str);
    return B;

}
void jia::show()
{
    cout<<str<<endl;
}
void main()
{
    jia A="abcd";
    jia B="efgh";
    A.show();
    B.show();
    (A+B).show();
}
2008-03-25 16:43
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
楼上的副本拷贝好像不安全。。。。还有局域变量的生存期的问题。。。

学习需要安静。。海盗要重新来过。。
2008-03-25 16:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-204628-1-1.html




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

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