课堂小练习: 设计、定义并实现Complex类

【实验结论】

#Complex.h

#ifndef HEADER_Complex_H
#define HEADER_Complex_H
#include<cmath>
#include<iostream>
using namespace std;
class Complex
{
    public:
        Complex(double real0=0,double imaginary0=0);
        Complex(Complex &p);
        void add(Complex a);
        void show();
        double mod();
    private:
        double real,imaginary;
};
 Complex::Complex(double real0,double imaginary0):real(real0),imaginary(imaginary0)
 {}
 Complex::Complex(Complex &p):real(p.real),imaginary(p.imaginary)
 {}
void Complex::add(Complex a)
{
    real+=a.real;
    imaginary+=a.imaginary;
}
 void Complex::show()
 {
     cout<<real<<"+"<<imaginary<<"i"<<endl;
 }
double Complex::mod()
 {
     return sqrt(real*real+imaginary*imaginary);
 }
 #endif

#main

#include<iostream>
#include"Complex.h"
using namespace std;
int main()
{
    Complex c1(3,5);
    Complex c2(4.5);
    Complex c3(c1);
    c1.add(c2);
    c1.show();
    cout<<c1.mod();
    return 0;
}

[运行结果]

 

【实验总结】

本来是想着用结构体定义类的,但是发现main函数里给出的输入比较适合用普通类,用结构体的话定义成员函数时大概想了一下,会比较麻烦,所以最后就没用结构体了。

还有一个小问题,就是“Complex c2=4.5”Dev-C++编译出来也显示了错误(如下图)

错误显示“对于'Complex::Complex(Complex)'即复制构造函数没有匹配的变量”。之后参照上面从c1的定义,直接将c2写成了c2(4.5),编译之后就对了。但是后来巧合之下把复制构造函数删了之后试了一下,发现“Complex c2=4.5"是可以运行的,在查过了CSDN和博客园之后都没有结果,嗯,个人感觉,可能是因为系统无法判断4.5是给复制构造函数的还是构造函数的,嗯,,,如果知道的话可以告诉我一下吗。

嗯,上面那个问题再补充一下,我将构造函数的初值去掉之后,再定义了一个构造函数Complex(double real0)/Complex(double real0=0),如果删去复制构造函数是可以的实现“Complex=4.5”的,但是加上复制构造函数依旧是不行的,所以我还是觉得是系统无法判断4.5是给复制构造函数还是构造函数。

 

【评论地址】

https://www.cnblogs.com/xiaobailong123/p/10631549.html
https://www.cnblogs.com/xtn-0326/p/10631725.html
https://www.cnblogs.com/Tiger-Hu22/p/10631879.html

 

转载于:https://www.cnblogs.com/bzwy/p/10627992.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值