| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1730 人关注过本帖
标题:帮忙修改一下C++程序
只看楼主 加入收藏
bcxye
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-3-26
收藏
得分:0 
好厉害,学习ing
2008-03-26 11:00
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-3-22 09:05 的发言:[/bo]

#include
#include
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 )...


sunkaidong,问问你啊,为什么你在重载这个加法运算符的时候,参数和返回值都要返回引用呢?我也看到有很多人在重载运算符的时候喜欢用引用,其实不用引用,申明成jia operator +(jia a );实现的时候:
jia jia::operator +(jia a)
{
   
    strcat(str,a.str);
    return *this;

}

也是可以的啊?这样和引用有什么区别吗?

[[it] 本帖最后由 VanHorn 于 2008-3-26 22:10 编辑 [/it]]

我用VC++6我怕谁?
2008-03-26 21:58
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你看看书..对于应用是起别名...不需要副本拷贝...节省时间..对于副本小的没什么区别..对于大的不说你也知道....一种习惯.....

学习需要安静。。海盗要重新来过。。
2008-03-26 22:03
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
哈哈。我们都出了一个问题。str是私有的。不能用对象访问。

我用VC++6我怕谁?
2008-03-26 22:12
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
// 修改一个程序.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream.h>
#include<string.h>

class jia
{
public:
    char* getstr();
   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)
{
    
    strcat(str,(a.getstr() ) );

    return *this;

}
void jia::show()
{
    cout<<str<<endl;
}

char* jia::getstr()
{
    return str;

}



void main()
{
    jia A="abcd";
    jia B="efgh";
    jia c=A+B;
    A.show();
    B.show();
    c.show();
}
这样才对。我编译过了。

我用VC++6我怕谁?
2008-03-26 22:22
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
没有错..你看看结果....

学习需要安静。。海盗要重新来过。。
2008-03-26 22:40
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
我还有一个友员的
#include<iostream.h>
#include<string.h>
namespace a{
class jia
{
public:
   jia(char stl[])
   {
    strcpy(str,stl);
   };
   friend jia operator +(jia & b,jia & a )
   {

    return jia(strcat(b.str,a.str));

   };
   void show()
   {
    cout<<str<<endl;
   }
private:
    char str[50];
};
}
void main()
{
    a::jia A="abcd";
    a::jia B="efgh";
    a::jia c=A+B;
    A.show();
    B.show();
    c.show();
}

学习需要安静。。海盗要重新来过。。
2008-03-26 22:42
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
如果想了解概念可以看java里面的..私有的访问概念很清楚....概念是这样说的只能被类自己访问....相当在类里面定义自己一个引用....只要类名字就可以访问私有成员了....下次不要轻易说别人错了.....呵呵

#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";
   
    A.show();
    B.show();
    jia c=A+B;
    c.show();
}

学习需要安静。。海盗要重新来过。。
2008-03-26 22:52
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
#include "stdafx.h"
#include<iostream.h>
#include<string.h>

class jia
{
public:
    void Setstr(char* lstr);
    char* getstr();
   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 b(str);
    char* tempstr;
    tempstr=b.getstr();
    strcat(tempstr,(a.getstr() ) );
    b.Setstr(tempstr);
    return b;

}
void jia::show()
{
    cout<<str<<endl;
}

char* jia::getstr()
{
    return str;

}

void jia::Setstr(char* lstr)
{
    strcpy(str,lstr);

}

void main()
{
    jia A="abcd";
    jia B="efgh";
    jia c=A+B;
    A.show();
    B.show();
    c.show();
}



修改了一个完美版的。先前的那个在A+B的时候会改变A的值。这时我们不希望的。哈哈。一个修改好的程序,还是不适应用引用啊。

我用VC++6我怕谁?
2008-03-26 23:00
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
我开始的程序有点问题是引用一起的..其它没什么问题..当然楼上改的不错...用string 更好点....

学习需要安静。。海盗要重新来过。。
2008-03-26 23:05
快速回复:帮忙修改一下C++程序
数据加载中...
 
   



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

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