美文网首页
C++ 实现复数类

C++ 实现复数类

作者: 失眠是真滴难受 | 来源:发表于2019-02-16 22:42 被阅读1次

一个复数类

#include<iostream>
using namespace std;

class Complex
{
private:
    double real;
    double imag;
public:
    Complex(double x, double y);//构造函数,
    ~Complex()//析构函数,如果没有写构造函数和析构函数,编译器会自动帮忙生成
    {};

    Complex Add(const Complex x) const;
    Complex Sub(const Complex x) const;
    Complex Mut(const Complex x) const;
    Complex Div(const Complex x) const;
    void Show();
};

Complex::Complex(double x = 1.0, double y = 2.0)//构造函数的实现
{
    real = x;
    imag = y;
}

Complex Complex::Add(const Complex x) const
{
    Complex z;
    z.real = real + x.real;
    z.imag = imag + x.imag;
    return z;
}

Complex Complex::Sub(const Complex x) const
{
    Complex z;
    z.real = real - x.real;
    z.imag = imag - x.imag;
    return z;
}

Complex Complex::Mut(const Complex x) const
{
    Complex z;
    z.real = real * x.real;
    z.imag = imag * x.imag;
    return z;
}

Complex Complex::Div(const Complex x) const
{
    Complex z;
    z.real = real / x.real;
    z.imag = imag / x.imag;
    return z;
}

void Complex::Show(void)
{
    cout << "real = " << real;
    cout << "imag = " << imag << endl;
}

测试程序

#include "Template_Complex.h"
#include "iostream"
using namespace std;

int main()
{
    Complex x(1.2f,2.4f), y(1.2f,2.4f), z;
    z = x.Add(y);
    z.Show();
    z = x.Sub(y);
    z.Show();
    z = x.Mut(y);
    z.Show();
    z = x.Div(y);
    z.Show();

}


构造函数的名字要和类的名字相同,每个类必须有构造函数,同时还要有对应的析构函数。
const使用:

  1. 用于指针的两种情况:const是一个左结合的类型修饰符.
    int const A; //A可变,A不可变
    int const A; //A不可变,A可变
    2.限定函数的传递值参数:
    void function(const int Var); //传递过来的参数在函数内不可以改变.
    3.限定函数返回值型.
    const int function(); //此时const无意义
    const myclassname function(); //函数返回自定义类型myclassname.
    4限定函数类型.
    void function()const; //常成员函数, 常成员函数是不能改变成员变量值的函数。
    例如
int Point::GetY()
{
return yVal;
}

这个函数被调用时,不改变Point对象,而下面的函数改变Point对象:

void Point:: SetPt (int x, int y)
{
xVal=x;
yVal=y;
}

为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明:

class Point
{
public:
int GetX() const;
int GetY() const;
void SetPt (int, int);
void OffsetPt (int, int);
private:
int xVal, yVal;
};

const成员函数应该在函数原型说明和函数定义中都增加const限定:

int Point::GetY() const
{
return yVal;
}
class Set {
public:
Set (void){ card = 0; }
bool Member(const int) const;
void AddElem(const int);
//...
};
bool Set::Member (const int elem) const
{
//...
}

非常量成员函数不能被常量成员对象调用,因为它可能企图修改常量的数据成员:
const Set s;
s.AddElem(10); // 非法: AddElem不是常量成员函数
s.Member(10); // 正确
*******但构造函数和析构函数对这个规则例外,它们从不定义为常量成员,但可被常量对象调用(被自动调用)。它们也能给常量的数据成员赋值,除非数据成员本身是常量。
为什么需要const成员函数?
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。

相关文章

  • C++ 实现复数类

    一个复数类 测试程序 构造函数的名字要和类的名字相同,每个类必须有构造函数,同时还要有对应的析构函数。const使...

  • [转]漫谈 C++:良好的编程习惯与编程要点

    以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯...

  • 漫谈C++:良好的编程习惯与编程要点

    以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯...

  • 漫谈 C++:良好的编程习惯与编程要点

    以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯...

  • UML图笔记

    一、泛化: 泛化 C++实现方式:类继承 二、实现 C++实现方式:类继承,且实现了父类的接口。 三、关联 单向关...

  • c++的运算符重载

    C++中的加号重载:例:实现复数的相加 C++中的前置++重载:例:点的移动 C++中的后置++重载:例:点的移动

  • 第十六章 string类和标准模板库(7)其他库

    (七)其他库 c++还提供了其他一些类库,比如头文件为复数运算提供了类模板complex,包含用...

  • 上交OJ-1011. 复数类

    1011. 复数类 题目描述 写一个复数类,实现以下程序主函数中所需要的功能。 输入格式 输入包括两行,第一行是两...

  • 项目:mySTL

    黑体部分可尝试自行实现 1. 复数类模板 complex<>include/Complex.hTest/compl...

  • C++类、对象

    一、类 类(Class)则是C++面向对象编程的实现方式。class是C++关键字,也是用于类声明的关键字。紧接c...

网友评论

      本文标题:C++ 实现复数类

      本文链接:https://www.haomeiwen.com/subject/pqxweqtx.html