如何使函数返回一个类呀?

zbstone 2002-03-26 11:11:00
各位高手好,我才刚开始进入C++的世界
现在遇到一个难题:
我需要使类中的一个公有函数返回这个类,如何实现
请指教!
这个程序是C++程序,不涉及VC
用类实现复数的四则运算
以下是我的程序源码:
#include"complex.h"
void main()
{
ComplexOper comp1,comp2,comp3;
comp1.SetCompOper(3.5,2.7);
comp2.SetCompOper(5.6,34.4);
comp3=comp1.AddComp(comp2);
comp3.display();
}


#ifndef complex_h_
#define complex_h_

#include <iostream.h>
//复数基本四则运算通过类的实现

class ComplexOper
{
public:
ComplexOper();
void SetCompOper(const double dReal,const double dImag);
ComplexOper AddComp(ComplexOper);
//void SubComp();
//void MulComp();
//void DivComp();
void display();
private:
double RealPart;
double ImagPart;
};

ComplexOper::ComplexOper()
{
RealPart=ImagPart=0.0;
}

void ComplexOper::SetCompOper(const double dReal,const double dImag)
{
RealPart=dReal;
ImagPart=dImag;
}

ComplexOper ComplexOper::AddComp(ComplexOper Comp)
{
double x,y;
x=RealPart+Comp.RealPart;
y=ImagPart+Comp.ImagPart;
return ComplexOper(x,y);
}

void ComplexOper::display()
{
cout<<RealPart<<(ImagPart>0 ? "+" :"" )<<ImagPart<<endl;
}

#endif
恳请指教!
...全文
126 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbstone 2002-03-29
  • 打赏
  • 举报
回复
oyf888(欧阳锋) :谢谢赐教,不过如果想输出
那么怎么实现,外加输出语句吗?
oyf888 2002-03-28
  • 打赏
  • 举报
回复
重载操作符operator +,-,*,/

same as:
comp3=comp1+comp2;
comp4=comp1-comp2;

这个类属于纯运算类, 不宜带输出功能,display就免了吧。

rovoboy 2002-03-27
  • 打赏
  • 举报
回复
这样的话使用重载操作符比较好,使用方便,符合习惯。
看看
http://www.umlchina.com/xprogrammer/issue/3/abstractclass.htm
可能会有所帮助
zbstone 2002-03-27
  • 打赏
  • 举报
回复
STL

虽然我听说个这个STL,不过还不是很清楚究竟是什么,因为刚刚蹋入VC这个世界,其实也只能说是刚刚开始学习一些面向对象的设计思想(而且还只是局限于C++)所以恳请各位前辈多多指教,先在此谢过了!
zbstone 2002-03-27
  • 打赏
  • 举报
回复
使用指针吗?不过这个会降低程序性能,而且我不希望改变传了参数的值
e_notimpl 2002-03-26
  • 打赏
  • 举报
回复
加一个Copy构造函数
vc8 2002-03-26
  • 打赏
  • 举报
回复
STL
dongfa 2002-03-26
  • 打赏
  • 举报
回复
当作参数传入

如:
int MyFunc(CMyClass * ddd)
{
...
}
CMyClass d;
MyFunc(&d);
zbstone 2002-03-26
  • 打赏
  • 举报
回复
我现在已经实现了
#ifndef Ex_complex_h
#define Ex_complex_h
//类实现复数的四则运算
#include <iostream.h>
#include <iomanip.h>

class Complex
{
public:
Complex();
void SetComplex(double,double);
Complex ComplexAdd(Complex);
Complex ComplexMin(Complex);
Complex ComplexMul(Complex comp1);
Complex ComplexDiv(Complex comp1);
void display();
private:
double RealPart;
double ImagPart;
};

Complex::Complex()
{
RealPart=ImagPart=0.0;
}

void Complex::SetComplex(double x,double y)
{
RealPart=x;
ImagPart=y;
}

Complex Complex::ComplexAdd(Complex comp1)
{
Complex comp;
double x,y;
x=RealPart+comp1.RealPart;
y=ImagPart+comp1.ImagPart;
comp.SetComplex(x,y);
return comp;
}

Complex Complex::ComplexMin(Complex comp1)
{
Complex comp;
double x,y;
x=RealPart-comp1.RealPart;
y=ImagPart-comp1.ImagPart;
comp.SetComplex(x,y);
return comp;
}

Complex Complex::ComplexMul(Complex comp1)
{
Complex comp;
double x,y;
x=RealPart*comp1.RealPart-ImagPart*comp1.ImagPart;
y=ImagPart*comp1.RealPart+RealPart*comp1.ImagPart;
comp.SetComplex(x,y);
return comp;
}

Complex Complex::ComplexDiv(Complex comp1)
{
Complex comp;
double x,y,z;
z=comp1.RealPart*comp1.RealPart+comp1.ImagPart*comp1.ImagPart;
x=(RealPart*comp1.RealPart+ImagPart*comp1.ImagPart)/z;
y=(ImagPart*comp1.RealPart-RealPart*comp1.ImagPart)/z;
comp.SetComplex(x,y);
return comp;
}

void Complex::display()
{
cout<<RealPart<<(ImagPart>0?"+":"");
cout<<(ImagPart==0?"":"i")<<ImagPart<<endl;
}

#endif
#include "Ex_complex.h"


void main()
{
Complex comp1,comp2,comp3,comp4,comp5,comp6;
comp1.SetComplex(2.3,4.5);
comp2.SetComplex(6.7,4.5);
comp1.display();
comp2.display();
comp3=comp1.ComplexAdd(comp2);
comp3.display();
comp4=comp1.ComplexMin(comp2);
comp4.display();
comp5=comp1.ComplexMul(comp2);
comp5.display();
comp6=comp1.ComplexDiv(comp2);
comp6.display();
}
不过不知道是否真正体现了类的设计思想,
是否有更好的方法
哪位高手指教一二:)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧