首页 > 编程语言 >C++ 输入/输出运算符重载

C++ 输入/输出运算符重载

时间:2024-03-02 21:34:25浏览次数:23  
标签:11 10 Distance int C++ 运算符 重载 feet

C++ 能够使用流提取运算符 >> 和流插入运算符 << 来输入和输出内置的数据类型。您可以重载流提取运算符和流插入运算符来操作对象等用户自定义的数据类型。

在这里,有一点很重要,我们需要把运算符重载函数声明为类的友元函数,这样我们就能不用创建对象而直接调用函数。

下面的实例演示了如何重载提取运算符 >> 和插入运算符 <<

 1 #include <iostream>
 2 using namespace std;
 3  
 4 class Distance
 5 {
 6    private:
 7       int feet;             // 0 到无穷
 8       int inches;           // 0 到 12
 9    public:
10       // 所需的构造函数
11       Distance(){
12          feet = 0;
13          inches = 0;
14       }
15       Distance(int f, int i){
16          feet = f;
17          inches = i;
18       }
19       friend ostream &operator<<( ostream &output, const Distance &D )
21       { 
22          output << "F : " << D.feet << " I : " << D.inches;
23          return output;            
24       }
25  
26       friend istream &operator>>( istream  &input, Distance &D )
27       { 
28          input >> D.feet >> D.inches;
29          return input;            
30       }
31 };
32 int main()
33 {
34    Distance D1(11, 10), D2(5, 11), D3; 
35    cout << "Enter the value of object : " << endl;
36    cin >> D3;
37    cout << "First Distance : " << D1 << endl;
38    cout << "Second Distance :" << D2 << endl;
39    cout << "Third Distance :" << D3 << endl;
40    return 0;
41 }

结果

$./a.out
Enter the value of object :
70
10
First Distance : F : 11 I : 10
Second Distance :F : 5 I : 11
Third Distance :F : 70 I : 10

 

标签:11,10,Distance,int,C++,运算符,重载,feet
From: https://www.cnblogs.com/uacs2024/p/18049265

相关文章

  • 随笔记录篇——C++iostream库 以及std
    这篇文章非原创,来自我学习过程中看到的其他博主发的一些资料,解决了我的疑问,在此进行整理。C语言的标准输入输出库是stdio.h库,是一个函数库,而不是类库。其中包含了我们其中所用的scanfpringf都是一些独立的全局函数,因为C语言是不支持类的。C++的标准输入输出库iostream是一个类......
  • C++ 关系运算符重载
    C++语言支持各种关系运算符(<、>、<=、>=、==等等),它们可用于比较C++内置的数据类型。您可以重载任何一个关系运算符,重载后的关系运算符可用于比较类的对象。1#include<iostream>2usingnamespacestd;3 4classDistance5{6  private:7 ......
  • C++ 一元运算符重载
    一元运算符只对一个操作数进行操作,下面是一元运算符的实例:递增运算符(++)和递减运算符(--)一元减运算符,即负号(-)逻辑非运算符(!)一元运算符通常出现在它们所操作的对象的左边,比如!obj、-obj和++obj,但有时它们也可以作为后缀,比如obj++或obj--。下面的实例演示了如何......
  • C++第六节课 引用变量 指针的升级版
    #include<iostream>usingnamespacestd;//C++的引用是C指针的升级可以提高代码的稳定性和健壮性//const修饰的引用是常引用//函数传参实参向形参进行传递默认是值的传递这个是值的一个副本两个互不影响intadd(constint&a,constint&b){///a++;避......
  • C++ 重载运算符和重载函数 二元运算符重载
    C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型......
  • c++多线程按行读取同一个每行长度不规则文件
    对于非常大的比如上百G的大文件读取,单线程读是非常非常慢的,需要考虑用多线程读,多个线程读同一个文件时不用加锁的,每个线程打开一个独立的文件句柄多线程读同一个文件实现思路思路1先打开一个文件句柄,获取整个文件大小file_size确定要采用线程读取的部分大小read_size和......
  • c++多线程编程
    c++线程库:<thread>创建线程:需要可调用的函数或者函数对象作为线程入口点例:std::threadthreadname(function_name,args...)在C++中,当使用std::thread创建线程并传递类的成员函数时,需要使用&来获取成员函数的地址,同时还需要传递对象的指针(或引用)作为第一个参数。......
  • C++ 继承
    1//基类2classAnimal{3  //eat()函数4  //sleep()函数5};678//派生类9classDog:publicAnimal{10  //bark()函数11};基类&派生类一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我......
  • C++ 类的静态成员
    原文可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态......
  • C++ 指向类的指针
    原文一个指向C++类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符 ->,就像访问指向结构的指针一样。与所有的指针一样,在使用指针之前,对指针进行初始化。在C++中,指向类的指针指向一个类的对象,与普通的指针相似,指向类的指针可以用于访问对象的成员......