首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重载输入运算符。简单分数类

重载输入运算符是指在编程语言中,通过自定义类的成员函数或非成员函数,对输入运算符(通常是“>>”)进行重载,以实现对自定义类对象的输入操作。

简单分数类是指一个用于表示分数的简单类,它包含了分子和分母两个整数成员变量,以及一些用于操作分数的成员函数。

重载输入运算符对于简单分数类的实现可以如下:

代码语言:txt
复制
#include <iostream>

class Fraction {
private:
    int numerator;   // 分子
    int denominator; // 分母

public:
    // 构造函数
    Fraction(int num = 0, int den = 1) : numerator(num), denominator(den) {}

    // 重载输入运算符
    friend std::istream& operator>>(std::istream& input, Fraction& fraction) {
        input >> fraction.numerator >> fraction.denominator;
        return input;
    }

    // 其他成员函数和操作符重载...

};

int main() {
    Fraction fraction;
    std::cout << "请输入分数(格式:分子 分母):";
    std::cin >> fraction;
    std::cout << "输入的分数为:" << fraction << std::endl;
    return 0;
}

在上述代码中,我们通过友元函数的方式重载了输入运算符。在重载函数中,我们使用输入流对象(如std::cin)来读取用户输入的分子和分母,并将其赋值给分数对象的成员变量。

这样,用户就可以通过输入运算符直接输入分数,而无需手动解析输入字符串。例如,用户可以输入"3 4"表示3/4的分数。

对于简单分数类的应用场景,它可以用于处理需要进行分数计算的问题,比如数学运算、统计分析等。在实际开发中,我们可以根据具体需求对简单分数类进行扩展,添加更多的成员函数和操作符重载,以满足实际业务需求。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(移动推送、移动分析、移动测试等):https://cloud.tencent.com/product/mobile
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云虚拟专用网络(VPC):https://cloud.tencent.com/product/vpc
  • 腾讯云安全产品(云防火墙、DDoS 高防等):https://cloud.tencent.com/product/safety
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

和对象:运算符重载

通过运算符重载,我们可以使得我们自定义的对象像内置类型一样进行运算,这为编写清晰、简洁且易于理解的代码提供了便利。 为什么要进行运算符重载?...在学习运算符重载之前: 我们对于内置类型的运算是这样的:int = int + int; 但是我们对于自定义类型的无法使用简单运算符进行运算,我们需要特别得去写一个函数或者一段过程性代码来实现这个功能...当尝试将赋值运算符重载函数作为静态函数进行定义时: 在C++中,赋值运算符 = 被设计为的成员函数,这是因为它需要访问的内部状态,并且需要能够处理自赋值的情况(即对象赋值给自己)。...这个默认的赋值运算符会进行成员到成员的简单赋值,也就是逐个复制每个非引用、非指针成员变量的值。..._day << "日"; return out; } ``` 流输出 和流输入一样内用友元函数。

10910
  • 【C++】运算符重载案例 - 字符串 ⑤ ( 重载 大于 > 运算符 | 重载 小于 < 运算符 | 重载 右移 >> 运算符 - 使用全局函数重载 | 代码示例 )

    一、重载 大于号 / 小于号 运算符 - 使用成员函数重载 1、重载 大于 > 运算符 使用 成员函数 实现 等于判断 == 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate...使用 成员函数 实现 小于 < 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 要对 String a , b 对象对比操作 , 使用...- 使用全局函数重载 ---- 左移 << 操作符 cout << s << endl , 是将 s 对象输出到 cout 标准输出流中 ; 右移 >> 操作符 cin << s , 是将 标准输入流...cin 中的内容输入到 s 对象中 ; 使用 成员函数 实现 右移 >> 运算符 重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 要对 String...=(String& s); // 重载 大于 > 运算符 bool operator>(String& s); // 重载 小于 < 运算符 bool operator<(String& s

    50820

    【C++】运算符重载 ② ( 内部定义云算符重载 - 成员函数 | 外部定义运算符重载 - 全局函数 | 可重载运算符 )

    二、运算符重载语法 - 内部定义云算符重载 ( 成员函数 ) 1、运算符重载函数语法说明 C++ 中允许重新定义运算符的行为 , 如常用的加减成熟运算符 , 都可以进行重载操作 ; 可以自定义运算符的操作...; 内部定义云算符重载 , 格式为 “返回值类型 ( 名称 ) operator运算符符号 ( const 参数类型名称& 参数变量名称 ) { 方法内容 }” , 参数的类型是引用类型 ;..., 其本质是定义一个方法 , 该方法有固定的格式去定义 , 调用该方法的时候 , 可以使用函数形式调用 , 也可以使用运算符进行运算 , 其 本质还是的函数调用 ; 2、运算符重载函数调用 重载运算符完整调用...: 90 内部定义的运算符重载简化写法结果 : 90 三、运算符重载语法 - 外部定义运算符重载 ( 全局函数 ) ---- 1、运算符重载函数语法说明 外部定义运算符重载 , 运算符重载也可以定义在的外部..., 可以是任意包含头文件的代码中 , 其定义方式与定义在的内部对比 , 只有参数是有区别的 , 在外部定义 , 其中需要两个参数 , 分别代表运算符运算的两个参数 ; 乘法运算符重载 , 对 “

    24310

    【C++】运算符重载 ⑧ ( 左移运算符重载 | 友元函数 成员函数 实现运算符重载 | 对象 使用 左移运算符 )

    一、左移运算符重载 1、友元函数 / 成员函数 实现运算符重载 运算符重载 的正规写法一般都是 使用 成员函数 的形式 实现的 ; 加法 + , 减法 - , 自增 ++ , 自减 - - , 一般都使用成员函数...实现 运算符重载 ; 上述 运算符重载 既可以使用 成员函数 进行重载 , 又可以使用友元函数进行重载 ; 只能使用 成员函数 重载运算符 : = , [] , () , -> 等操作符 只能使用...成员函数 进行重载 ; 只能使用 友元函数 重载运算符 : 无法修改 左操作数 的情况下 , 只能使用 全局函数 ( 需声明 友元函数 ) 进行重载 ; 2、对象 使用 左移运算符 平时使用 cout...(或没有可接受的转换) 如果想要使用 cout << s1 << endl; 用法输出对象到日志中 , 需要重载 左移操作符 ; 3、左移运算符 << 重载 使用 全局函数 实现 左移运算符 << 重载...: 首先 , 写出函数名 , cout << s1 左移操作符重载 , 函数名规则为 " operate " 后面跟上要重载运算符 , 函数名是 operate<< ; operate<< 然后 ,

    26110

    python的继承与运算符重载

    value的取值 a= D(test = '45') a Out[12]: {'test': 'from D'} 实例化D,是我们的结果,并且看到 a['23'] Out[13]: 'from D' 我们输入任何一个数...多重继承和方法解析顺序: 多重继承的一个问题是,不相关的祖先实现了同名方法,这种冲突叫做“菱形问题” 例如: class A(): def ping(self): print(...重载运算符: 这个含义是什么呢?简而言之就是对中缀运算符(+,-等)和一元运算符(~之类的),进行重新定义,使得用户定义的对象也可以使用。...不过python也有限制的,例如: --不能重载内置类型的运算符 --不能新建运算符,只能使用现有的 --is,not,or和and不能重载 重载运算符简单只要实现相应的方法即可,例如: class...test(): def __eq__(self, item): return item 一个简单不应该这么使用的例子: a = test() a == '3' Out[26]:

    86610

    【C++】运算符重载案例 - 字符串 ④ ( 重载 双等号 == 运算符 | 重载 不等号 != 运算符 | 代码示例 )

    一、重载 双等号 / 不等号 运算符 1、等于判断 == 运算符重载 使用 成员函数 实现 等于判断 == 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符...= s.m_p[i]) { return false; } } return true; } 2、重载 不等号 != 运算符 使用 成员函数 实现 重载 不等号 !...= 运算符 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 要对 String a , b 对象对比操作 , 使用 !...String& operator=(const char* p); // 重载 数组下标 [] 操作符 char& operator[](int i); // 重载 双等号 == 运算符 bool...String 对象 s1 = s2; // 调用重载的等号运算符函数, 右操作数是 字符串常量值 , char* 指针类型 s3 = "Jerry"; // 调用重载的下标运算符函数 char

    26220

    C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载与对象_中篇)

    赋值运算符重载 运算符重载 C++为了增强代码的可读性引入了运算符重载运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。...函数原型:返回值类型 operator操作符(参数列表) 注意: 不能通过连接其他符号来创建新的操作符:比如operator@ 重载操作符必须有一个类型参数 用于内置类型的运算符,...赋值运算符只能重载的成员函数不能重载成全局函数 class Date { public: Date(int year = 1900, int month = 1, int day = 1) {...此时用户再在外自己实现一个全局的赋值运算符重载,就和编译器在中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是的成员函数。 3....用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。 注意:内置类型成员变量是直接赋值的,而自定义类型成员变量需要调用对应的赋值运算符重载完成赋值。

    8800

    【C++】与对象(运算符重载、const成员、取地址重载

    今日更新了与对象运算符重载、const成员、取地址重载的内容 欢迎大家关注点赞收藏⭐️留言 赋值运算符重载 运算符重载 C++为了增强代码的可读性引入了运算符重载运算符重载是具有特殊函数名的函数...函数原型:返回值类型 operator操作符(参数列表) 注意: 不能通过连接其他符号来创建新的操作符:比如operator@ 重载操作符必须有一个类型参数 用于内置类型的运算符,其含义不能改变,例如...由上图可知,运算符重载成全局的就需要成员变量是公有的, 可这样封装性就没了保证。 下面是解决方法: 我们把operator放到里面,这样就不需要把内置类型的变成公开的了。...赋值运算符只能重载的成员函数不能重载成全局函数 原因:赋值运算符如果不显式实现,编译器会生成一个默认的。...此时用户再在外自己实现 一个全局的赋值运算符重载,就和编译器在中生成的默认赋值运算符重载冲突了,故赋值 运算符重载只能是的成员函数。

    14210

    从零开始学C++之运算符重载(三):完善String([]、 +、 += 运算符重载)、>>和

    在前面文章中使用过几次String的例子,现在多重载几个运算符,更加完善一下,并且重载运算符。...[]运算符重载 +运算符重载 +=运算符重载 <<运算符重载 >>运算符重载 String.h: #ifndef _STRING_H_ #define _STRING_H_ #include <iostream...,其中使用了static_cast和 const_cast 两种类型转换操作符,可以参考这里;operator+ 调用了operator+= 的实现;只能将流运算符重载为友元函数,因为第一个参数是流引用...,不是String 。...通过实现这样一个字符串,我们可以熟悉基本的内存管理与拷贝控制。 参考: C++ primer 第四版 Effective C++ 3rd C++编程规范

    95600

    【C++】运算符重载案例 - 字符串 ② ( 重载 等号 = 运算符 | 重载 数组下标 [] 操作符 | 完整代码示例 )

    一、重载 等号 = 运算符 1、等号 = 运算符 与 拷贝构造函数 等号 = 操作符 的 作用是 使用一个现有对象 为 另外一个现有对象赋值 ; 注意与 拷贝构造函数 区分 , 拷贝构造函数是 使用一个先有对象...等号 = 运算符 - 右操作数为 String 对象 使用 成员函数 实现 重载 等号 = 运算符 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 ,...; 先把本对象已分配的内存释放掉 ; 再进行赋值操作 ; 3、不同的右操作数对应的 重载运算符函数 不同的右操作数对应的 重载运算符函数 : 右操作数是 String 对象的情况 : // 重载等号...成员函数 实现 重载 下标 [] 运算符 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 下标 [] 运算符 , 使用时用法为 s[10] ; 重载..."Tom"); // 调用拷贝构造函数 String s3 = s2; // 调用重载的等号运算符函数, 右操作数是 String 对象 s1 = s2; // 调用重载的等号运算符函数

    38230

    【C++】和对象之赋值运算符重载

    前言 在前面的博客中提到了拷贝构造: 【C++】和对象之拷贝构造函数篇,和 运算符重载【C++】和对象之常引用与运算符重载,接下来继续来看赋值运算符重载中的赋值运算符重载。 2....赋值运算符只能重载的成员函数不能重载成全局函数 class Date { public: Date(int year = 1900, int month = 1, int day = 1) {...原因:赋值运算符如果不显式实现,编译器会生成一个默认的。此时用户再在外自己实现一个全局的赋值运算符重载,就和编译器在中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是的成员函数。...用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。注意:内置类型成员变量是直接赋值的,而自定义类型成员变量需要调用对应的赋值运算符重载完成赋值。...对内置类型值拷贝,自定义类型调用对应的拷贝构造和赋值重载。 既然编译器生成的默认赋值运算符重载函数已经可以完成字节序的值拷贝了,还需要自己实 现吗?当然像日期这样的是没必要的。那么下面的呢?

    12510

    C++运算符重载详解(日期实操)

    前言:为什么要实现运算符重载?...运算符重载的概念: 运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值 型与参数列表与普通的函数类似。...注意: 不能通过连接其他符号来创建新的操作符:比如operator@  重载操作符必须有一个类型参数 用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不 能改变其含义 作为成员函数重载时,...不然可读性很差,像下面定义在的内部: 重载流操作符为什么必须用引用?...分析: 流本质是为了解决,自定义类型的输入和输出问题,printf scanf 无法解决自定义类型的输入输出问题 面向对象 + 运算符重载解决!

    5210

    C++ 日期Date的实现(运算符重载

    参考链接: 递增++和递减-C++编程中的运算符重载 C++ 日期Date的实现(运算符重载)   该类综合考察了关于的基本操作,包括构造,拷贝构造,析构,运算符重载等方面的知识。 ...Date的内容和实现   1. 该日期主要实现日期时间的加减递增递减等基本运算 2. 主要通过运算符重载来实现日期的各种运算 3....重载运算符之间会反复调用,测试阶段的数据逐一进行测试,易于排错  Date.cpp  #pragma once #include using namespace std; class..._day;     }     // 赋值运算符重载   // d2 = d3 -> d2.operator=(&d2, d3)     Date& operator=(const Date& d...=运算符重载     bool operator != (const Date &d)     {         return !

    1.2K10

    【c++】和对象(五)赋值运算符重载

    1.赋值运算符重载 1.1运算符重载 运算符重载是一种编程语言特性,它允许开发者为已有的运算符提供自定义的实现。这意味着你可以改变某些运算符在你自定义的或数据类型上的行为。..._day; } 这部分是Date中==运算符重载。...此时用户再在外自己实现一个全局的赋值运算符重载,就和编译器在中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是的成员函数 如果我们不写赋值运算符重载,编译器是否会默认生成呢?...注意:内置类型成员变量是直接赋值的,而自定义类型成员变量需要调用对应的赋值运算符重载完成赋值 既然编译器生成的默认赋值运算符重载函数已经可以完成字节序的值拷贝了,还需要自己实现吗?...1.4前置++和后置++重载 在C++中,前置++和后置++运算符都可以被重载,以提供用户定义类型(比如)的自增功能。

    19310

    【C++修行之道】和对象(四)运算符重载

    注意: 不能通过连接其他符号来创建新的操作符:比如operator@ 重载操作符必须有一个类型参数 用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不能改变其含义 作为成员函数重载时...注意以上5个运算符不能重载。这个经常在笔试选择题中出现。 函数重载运算符重载有什么关系?..._day;*/ } //private: int _year; int _month; int _day; }; // 如果全局和中都有运算符重载函数,编译器会选择调用里的 bool operator...此时用户再在外自己实现一个全局的赋值运算符重载,就和编译器在中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是的成员函数。 3....用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。 注意:内置类型成员变量是直接赋值的,而自定义类型成员变量需要调用对应的赋值运算符重载完成赋值。

    9710

    【C++】运算符重载 ⑪ ( 数组 中 等号 = 运算符重载 | 函数原型 Array& operator=(Array& a) | 完整代码示例 )

    一、数组 等号 = 运算符重载 1、数组回顾 数组 定义后 , 如果 想要 使用 一个已存在的数组对象 为 另外一个已存在的数组对象 赋值 , 就需要 重载 等号 = 运算符 ; 重载 等号...= c , 然后再执行 a = (b = c) , 可见 等号运算符 的返回值 也要是一个相同类型的对象 , 该对象必须是引用类型 , 否则返回的是一个匿名对象 ; 2、等号 = 运算符重载 使用 成员函数...实现 等号 = 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 要对 Array a 对象 , 使用 = 运算符 , 使用时用法为...; // 指向数组数据内存 的指针 int* m_space; }; 2、Array.cpp 数组实现 #include "Array.h" // 无参构造函数 Array::Array()...<< endl; cout << array[i] << endl; } // 使用拷贝构造函数 赋值 Array array2(3); Array array3(3); // 调用重载的等号运算符

    14910
    领券