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

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
恳请指教!
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用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();
}
不过不知道是否真正体现了类的设计思想,
是否有更好的方法
哪位高手指教一二:)
Date 对象属性constructor 返回对创建此对象的 Date 函数的引用。prototype 使您有能力向对象添加属性和方法。Date 对象方法getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。getFullYear() 从 Date 对象以四位数字返回年份。getHours() 返回 Date 对象的小时 (0 ~ 23)。getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。getMonth() 从 Date 对象返回月份 (0 ~ 11)。getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。getTime() 返回 1970 年 1 月 1 日至今的毫秒数。getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。getYear() 已废弃。 请使用 getFullYear() 方法代替。parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。setFullYear() 设置 Date 对象中的年份(四位数字)。setHours() 设置 Date 对象中的小时 (0 ~ 23)。setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。setMonth() 设置 Date 对象中月份 (0 ~ 11)。setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。setTime() setTime() 方法以毫秒设置 Date 对象。setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。setUTCSeconds() setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段。setYear() 已废弃。请使用 setFullYear() 方法代替。toDateString() 把 Date 对象的日期部分转换为字符串。toGMTString() 已废弃。请使用 toUTCString() 方法代替。toISOString() 使用 ISO 标准返回字符串的日期格式。toJSON() 以 JSON 数据格式返回日期字符串。toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。toLocaleString() 据本地时间格式,把 Date 对象转换为字符串。toString() 把 Date 对象转换为字符串。toTimeString() 把 Date 对象的时间部分转换为字符串。toUTCString() 根据世界时,把 Date 对象转换为字符串。UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。valueOf() 返回 Date 对象的原始值。

16,473

社区成员

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

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

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