首页 > 其他分享 >运算符重载"+""-""*"“<<”">>"

运算符重载"+""-""*"“<<”">>"

时间:2023-04-20 23:36:50浏览次数:24  
标签:return cout v1 vector3D float 运算符 operator 重载

一、问题描述。

设计一个描述三维坐标的向量类vector3D,成员如下:数据成员:三个坐标x,y,z,float类型,私有访问属性公有函数成员:三个参数均有默认值的构造函数,默认值为0,0,0;重载输入输出运算符,输出格式为(x, y, z);重载加法+、减法-、数乘*(乘数在前,乘数为float类型)这三个运算符;在主函数中定义两个vector3D类对象v1,v2,均不带参数,之后输入数字1或2选择为v1输入赋值,还是为v1和v2输入赋值,对v1和v2进行加、减运算,对v1进行数乘运算,乘数由用户输入,最后输出三种运算结果。

二、程序流程图。

 

三、源代码。

#include<iostream>

#include <cmath>

#include <string>

using namespace std;

class vector3D{

private:

    float x;

    float y;

    float z;

public:

    vector3D(float xx = 0, float y = 0,float z=0);

    friend istream& operator>>(istream& input, vector3D& v);

    friend ostream& operator<<(ostream& output, vector3D& v);

    vector3D operator+(vector3D B);

    vector3D operator-(vector3D B);

    float operator*(vector3D B);

};

 

vector3D::vector3D(float xx, float yy, float zz) :x(xx), y(yy), z(zz)

{

    if (x == 0 && y == 0 && z == 0) cout << "已构造默认坐标" << endl;

    else cout << "已构造坐标为" << x << "," << y << "," << z << "的坐标" << endl;

}

istream& operator>>(istream& input, vector3D& v)

{

    input >> v.x >> v.y >> v.z;

    return input;

}

ostream& operator<<(ostream& output, vector3D& v)

{

    output << "(" << v.x << "," << v.y << "," << v.z << ")" << endl;

    return output;

}

vector3D vector3D:: operator+(vector3D B)

{

    return vector3D(x + B.x, y + B.y, z + B.z);

}

vector3D vector3D:: operator-(vector3D B)

{

    return vector3D(x - B.x, y - B.y, z - B.z);

}

float vector3D:: operator*(vector3D B)

{

    return x*B.x + y*B.y + z*B.z;

}

int main()

{

    vector3D a, b;

    cin >> a >> b;

    cout << "a+b=" << a + b << endl;

    cout << "a-b=" << a - b << endl;

    cout << "a*b=" << a*b << endl;

}

四、代码实现。

标签:return,cout,v1,vector3D,float,运算符,operator,重载
From: https://www.cnblogs.com/luoqingci/p/17338766.html

相关文章

  • 深度学习--数学运算符
    深度学习--数学运算符基础运算符加减乘除importtorcha=torch.randint(1,10,[2,2])b=torch.randint(1,10,[2,2])print(a)#tensor([[9,7],[5,8]])print(b)#tensor([[2,4],[1,7]])#加法+torch.add(a,b)a+b#tensor([[11,11],[6,15]])torch.add(a,b)#tensor(......
  • C#基础 ref out 函数参数 不算重载的简单示例
     .NETFramework:4.7.2       IDE:VisualStudioCommunity2019        OS:Windows10x64    typesetting:Markdown codeusingSystem;namespaceConsoleApp{classProgram{staticvoidMain(string[]args){......
  • 打卡 复数的加减运算(运算符重载)
    ###复数加减(运算符重载)声明一个复数类CComplex(类私有数据成员为double型的real和image)定义构造函数,用于指定复数的实部与虚部。重载<<运算符,以格式real+imagei的格式输出当前对象(当虚部为非负数时,实部虚部中间用+号连接,当虚部为负数时,实部虚部用-号连接:如3+4i,3-4i,3+0i)。重载......
  • 关于Java中方法重载和方法重写
    方法重写是子类继承父类(默认继承Object类)后覆盖父类的方法需要保证同名同参同返回值且访问权限范围不能缩小(public>protected>default>private)publicclassFather{ publicintmethod(){ return-1; }}classSonextendsFather{ //访问范围不能小返回值方法......
  • 运算符
    运算符的种类: 算术运算符:+,-,*,/,%,++,--赋值运算符:=关系运算符:<,>,>=,<=,==,!=instanceof逻辑运算符:&&(与),||(或),!(非)位运算符:&,|,^,~,>>,<<,>>>条件运算符:?,:扩展赋值运算符:+=,-=,*=,/=  运算结果: ......
  • 面积计算器(函数重载)
    一.问题描述:实现一个计算器,能够计算矩形或长方形的面积;二.编程思路:1.定义area函数2.定义主函数3.设立for循环4.设定if选择结构三.代码实现:#include<iostream>#include<string>usingnamespacestd;intarea(int,int);intarea(int,int,int);intmain(){inti,......
  • 4/18打卡 复数的输入输出和加减乘除重载
    classComplex{doublereal;doubleimag;public:friendistream&operator>>(istream&is,Complex&c);friendostream&operator<<(ostream&os,constComplex&a);Complex(){real=0;......
  • Java运算符——(带符号右移)>>、(无符号右移)>>>、与(&)
    >>表示带符号右移,如:inti=15;i>>2的结果是3,移出的部分将被抛弃。转为二进制的形式可能更好理解,00001111(15)右移2位的结果是00000011(3),00011010(18)右移3位的结果是00000011(3)。>>>无符号右移:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零。对于......
  • element-ui重载树列表(懒加载)
    在tree的:load方法中,将默认参数node,resolve两个参数存放到全局变量中;在对树节点进行操作后,对全局变量中的node.childNodes赋值为[空数组],最后重新调用tree的:load方法(参数为存放在全局的变量);代码如下:<el-treeref="tree2":props="props":load="loadNode"lazynode-key="l......
  • C++重载的奥义之运算符重载
    0、引言        重载,顾名思义从字面上理解就是重复装载,打一个不恰当的比方,你可以用一个篮子装蔬菜,也可以装水果或者其它,使用的是同一个篮子,但是可以用篮子重复装载的东西不一样。        正如在之前的文章《重载的奥义之函数重载》中介绍的类似,函数的重载是指利......