c++运算符重载,输出符号重载

运算符有单目运算符和双目运算符,分别跟一个操作数和两个操作数。在c++里面无论是那种他们都可以操作多种类型的的变量,例如+运算符a+b,a,b既可以是整型,也可以是浮点型(float),编译器有一张符号表保存了a,b的类型(可以自己去看编译原理),当编译器在翻译a+b时根据其类型调用相应子程序处理。有时候我们觉得a,b的类型不够,这个时候,我们就可以重载+,比如我们想实现   classA+classB,我们就可以重载+,返回值 operator+(classA a,classB& b){

要干的事.....

return 返回值

}

具体干什么以及返回值自己定义。下面给出了输出符号《是怎么重载的

#include "stdafx.h"

#include<iostream>

using namespace std;

class g{

public:

int  m;

};

ostream& operator<<(g h,ostream& o){//h《的左操作数,o为《的右操作数

return o<<h.m;

} ;

int _tmain(int argc, _TCHAR* argv[])

{

g k;

k.m=100;

k<<cout<<endl;

return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-24 15:38:40

c++运算符重载,输出符号重载的相关文章

流插入运算符为什么要被重载为全局函数?

https://www.coursera.org/learn/cpp-chengxu-sheji/lecture/c3tbl/liu-cha-ru-yun-suan-fu-he-liu-ti-qu-yun-suan-fu-de-zhong-zai  笔记 Part 1. 流插入运算符的重载: cout<<5<<endl; cout是在iosream中定义的一个ostream对象 iostream中对“<<”进行了重载.  cout<<5; 即 cout.op

C语言中的符号重载

C语言中的符号重载(C专家编程,2.3误做之过,P37) 符号 意义 static 在函数内部,表示该变量的值在各个调用间一直保持延续性 在函数这一级,表示该函数只对本文件可见 extern 用于函数定义,表示全局可见(属于冗余) 用于变量,表示它在其他地方定义 void 作为函数的返回类型,表示不返回任何值 在指针声明中,表示通用指针的类型 位于参数列表中,表示没有参数 * 乘法运算符 用于指针,间接引用 在声明中,表示指针 & 位的AND操作符 取地址操作符 = 赋值符 == 比较运算符 &l

C++ Primer 学习笔记_27_操作符重载与转换(2)--++/--运算符重载、!运算符重载、赋值运算符重载 、String类([]、 +、 += 运算符重载)、&gt;&gt;和&lt;&lt;运算符重载

C++ Primer 学习笔记_27_操作符重载与转换(2)--++/--运算符重载.!运算符重载.赋值运算符重载 .String类([]. +. += 运算符重载).>>和<<运算符重载 一.++/--运算符重载 1.前置++运算符重载 成员函数的方式重载,原型为: 函数类型 & operator++(); 友元函数的方式重载,原型为: friend 函数类型 & operator++(类类型 &); 2.后置++运算符重载 成员函数的方式重载,原型为:

[转] IOS 格式化输出符号与类型转换

1.IOS 格式化输出符号 %@    对象 %d,%i 整数 %u   无符号整形 %f    浮点(双字节) %x,%X  二进制整数 %o  八进制整数 %zi    正整数 %zu   size_t %p  指针 %e  浮点/双字节(科学计算) %g  f浮点/双字节 %s   C 字符串 %.*s  pascal字符串 %c   字符 %C unichar %lld  64位长整数 %llu  无符号64位长整数 %Lf   64位双字节 2.数据类型转换 2.1.NSString转

cout 堆栈,operator&lt;&lt; 运算符重载输出问题

在C++中cout的输出流当中,有一些问题很容易出错,就比如下面这道简单程序,看似简单,但却是一个值得深思的问题~~ #include <iostream> using namespace std; int foo(int &x) { cout << "第" << x << "次调用" << " "; return ++x; } int main() { int i = 1; c

C++用重载输出一个类

还记得刚开始学习C++时候,对于 cout 可以直接输出各种类型的变量很好奇. 毕竟是大一刚学完C语言,知道如果要输出什么数据肯定是要指定类型输出的 printf(). 对于C++中的一个变量 string str,使用 cout 可以直接输出string, 然而采用C中使用的 printf("%s", str) 是绝对无法输出该变量的.因为 这里的 str 是 一个 class.而不是一个 char* 类型的变量.当然,如果非要用printf()输出 str 也不是 不可以.采用 p

14.2. 输入和输出操作符重载

#include<iostream> #include<string> using namespace std; class sales_item { friend istream& operator>>(istream &,sales_item&); friend ostream& operator<<(ostream&,const sales_item&); public: sales_item&

关于函数运算符号重载函数

class A{public:    typedef int (*func)(int);    operator func();};int ff(int a){    return a;} A::operator func(){    return ff;} int main () {    cout<< A::func(9)<<endl;//运算符号 func() 这个func是typedef类型的. 调用的时候指定作用域} //运算符重载:成员函数方式 #include <

从一个二级题来看成员函数重载运算符和友元函数重载运算符

先上题:下列运算符都可以被友元函数重载的是: A)=,+,-,\ B)[],+,(),new C)->,+,*,>> D)<<,>>,+,* 正确答案为D 我们知道,在运算符重载,友元函数运算符重载函数与成员运算符重载函数的区别是:友元函数没有this指针,而成员函数有,因此,在两个操作数的重载中友元函数有两个参数,而成员函数只有一个. 因此,我们可以总结如下: 1.对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用友元函数重载运算符函数参数表中