cin、cout的重载

一、cin重载

  1.cin为ostream类的成员

  2.cin重载应为全局函数(毕竟ostream是别人写好的)

  3.代码

  a.核心代码

ostream & operator<<(ostream &os,const A &a)//const A &a是为了避免复制函数的调用 ;ostream &o 相当于 cout
{
    o<<a.x<<" "<<a.y;    return os;
}//返回值设为ostream &是为了连续使用 << 

b.完整试例

#include<iostream>
using namespace std;
class A
{
    int x;
    int y;
    public:
        A(int a=0,int b=0):x(a),y(b) {}
    friend ostream & operator<<(ostream & o,const A & a);//友元
};
ostream & operator<<(ostream &o,const A &a)//const A &a是为了避免复制函数的调用 ;ostream &o 相当于 cout
{
    o<<a.x<<" "<<a.y;
}//返回值设为ostream &是为了连续使用 <<
int main()
{
    A a(1,2);
    cout<<a<<endl;
}

二、cout重载

   1.核心代码

istream & operator>>(istream &is,A &a)
{
    is>>a.x>>a.y;
    return is;
}

   2.完整试例

#include<iostream>
using namespace std;
class A
{
    int x;
    int y;
    public:
        A(int a=0,int b=0):x(a),y(b) {}
        friend istream & operator>>(istream & is,A & a);
        friend ostream & operator<<(ostream & os,const A & a);//设置友元 是为了访问私有成员x,y
};
ostream & operator<<(ostream &os,const A &a)
{
    os<<a.x<<" "<<a.y;
    return os;
}
istream & operator>>(istream &is,A &a)
{
    is>>a.x>>a.y;
    return is;
}
int main()
{
    A a;
    cin>>a;
    cout<<a<<endl;
    return 0;
}

原文地址:https://www.cnblogs.com/shenyuling/p/10017485.html

时间: 2024-11-02 18:47:04

cin、cout的重载的相关文章

scanf printf gets() puts(),cin cout

最近在练机试题,常用的C和C++输入输出如下: 1 scanf 和printf int a; scanf("%d",&a) ; printf("%d",a); printf("\n"); double b;scanf("%"); char c; scanf("%c",&c);printf("%c",c); long int a; scanf("%ld"

acdream B - 郭式树 (水题 卡cin,cout, 卡LL)

题目 输入正好是long long的最大, 但是答案超long long 所以用unsigned, 不能用cin cout否则一定超时: 不能用abs(), abs 只用于整数. unsigned   int   0-4294967295   int   2147483648-2147483647 unsigned long 0-4294967295long   2147483648-2147483647long long的最大值:9223372036854775807long long的最小值

892B. Wrath#愤怒的连环杀人事件(cin/cout的加速)

题目出处:http://codeforces.com/problemset/problem/892/B 题目大意:一队人同时举刀捅死前面一些人后还活着几个 #include<iostream> #define IO ios::sync_with_stdio(false);\cin.tie(0);\cout.tie(0); using namespace std; typedef __int64 LL; const int maxn = 2e6+10; int p[maxn]; //库中有max

如何提高cin/cout的速度

如何提高cin/cout的速度 写在前面 在无数的算法比赛中,不难看到下面这样的东西: ios::sync_with_stdio(false); 甚至是这样的东西: ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); 现在,尽量用"\n"替换可以替换的endl .(考虑流输出) 好了,以上就是我目前知道的技巧. 为什么 [ref] sync_with_stdio(), tie()的应用 sync_

九度cin/cout耗时原因

做九度题的时候,由于数据量大,很多情况下得用scanf和printf代替cin和cout用于输入输出,不然会报错超时不能AC. 有三条建议用于提高C++的输入输出速度: At the first line in main function,add :std::ios_base::sync_with_stdio(false).which cancel theSynchronization between <iostream> and <cstdio>; At the second l

C++输入输出常用格式(cin,cout,stringstream)

输入格式 1.cin>>a; 最基本的格式,适用于各种类型.会过滤掉不可见字符例如空格,TAB,回车等 2.cin>>noskipws>>ch[i]; 使用了 noskipws流控制,不会过滤空白字符 3.cin.get(ch); 或 ch = cin.get(); 接收一个字符,类似于getchar(); 4.cin.getline(s,k); 接收一行中k个字符,可以接收空格 cin.getline()实际有三个参数,cin.getline(字符串,接收个数,结束字

加速C++ cin,cout的速度

用以下两行代码: ios::sync_with_stdio(false); //加速 cin.tie(0); 首先sync_with_stdio(false)是为了打断iostream输入输出到缓存,可以节约很多时间,使之与scanf相差无几. tie是将两个stream绑定的函数,空参数的话返回当前的输出指针,即tie(0)与tie(nullptr)来解决cin与cout的绑定. 原文地址:https://www.cnblogs.com/Bella2017/p/11519670.html

C++cin&amp;cout细节

一.念念不忘之Hello World. 作为一个程序员,我们第一个程序总会是它.对不对.那么在C++中我们是不是也常常会看到这么一段. 然后我们将这段代码使用helloword.cpp 文件保存起来.并且放入到G盘的code目录中.注意在这里我们可以使用如下命令查看当前文件夹的文件信息. 我的目录结构如下图所示: 最后我们代码的编译执行结果如下: 上述案例我们最简单的使用了一下cout 对象进行输出.那么cout具体是做什么的呢.cout其实是c++中的一个标准的输出流.那么在C++中我们如何像

PAT甲级 1028 List Sorting (25分)(cin cout 超时问题)

注意: 用scanf 和printf 进行输入输出 否则超时 cin,cout速度慢的原因就是它会将数据先读入缓冲区,然后再读入,所以与scanf的直接读入会有点时间差距. 1.换成scanf 和 printf输入输出 2.加一条语句 ios::sync_with_stdio(false); 题目代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algori