首页 > 编程语言 >C++之运算符重载

C++之运算符重载

时间:2022-08-15 23:00:42浏览次数:49  
标签:p2 temp int C++ 运算符 Person 重载

1 运算符重载

运算符    +    -    *    /    ++    --    %    &&    ->    >    < 等
image

class Person{

public :
	Person(){}
	Person(int a ,int b):m_A(a),m_B(b){}

	/*Person operator+(Person &p){
		Person temp;
		temp.m_A = this->m_A + p.m_A ;
		temp.m_B = this->m_B + p.m_B ;
		return temp;
	}*/

	int m_A;
	int m_B;
};
// 利用全局函数 进行+号运算符的重载
Person operator+(Person &p1, Person &p2) // 二元的运算符重载
{
	Person temp;
	temp.m_A = p1.m_A + p2.m_A;
	temp.m_B = p1.m_B + p2.m_B;
	return temp;
}
void test01(){
	Person p1(10,10);
	Person p2(15,24);
	Person p3 = p1+p2;
	cout << "p3的m_A和p3的m_B" << p3.m_A <<"    "<< p3.m_B << endl;
}

2 左移运算符符号重载

不要滥用运算符重载。重载左移运算符不能写在类里,不能作为成员函数。
cout << p1;
因为是cout调用的,不是其他对象调用的。

#include <iostream>
using namespace std; 

class Person{
public :
	Person(){}

	Person(int a , int b){
		this ->m_A = a;
		this -> m_B = b;
	}

	/*void operator<<(){   // 重载左移运算符不能写到成员函数中

	}*/
	int m_A;
	int m_B;
};

ostream & operator<<(ostream & cout,Person & p)
{	// 第1个参数cout ,第2个参数p1
	cout << p.m_A <<  p.m_B ;
	return cout ;
}

void test01(){
	Person p1(10,10);
	 /*cout << p1.m_A << "&" << p1.m_B <<endl;*/
	// 现在要求是直接使用左移运算符输出p1
	// cout << p1 << endl; // 需要重载左移运算符
	cout << p1 << endl;
}

标签:p2,temp,int,C++,运算符,Person,重载
From: https://www.cnblogs.com/lofly/p/16589987.html

相关文章

  • C#运算符与判断循环
    一、运算符原文:https://www.runoob.com/csharp/csharp-operators.html运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C#有丰富的内置运算符,分类如下:算术运......
  • 位运算符
    Java定义的位运算(bitwiseoperators)直接对整数类型的位进行操作,这些整数类型包括long,int,short,char和byte。【&和|应用在布尔值上时,也会得到一个布尔值,和&&,||很类似,不过......
  • C++ 输入一句话,然后把这个字符串以单词为单位,逆转输出。(腾讯笔试题) 比如将“Alice cal
    #include<iostream>#include<string>#include<windows.h>usingnamespacestd;intmain(){stringstr;inti=0;//访问字符数组的下标intcoun......
  • Python-04运算符
    Python运算符运算符用于对变量和值执行操作。Python在以下组中划分运算符:算术运算符赋值运算符比较运算符逻辑运算符身份运算符成员运算符位运算符1#运算......
  • C++易忘知识点记录
    隐藏的默认构造函数没有参数的构造函数称为【默认构造函数】如果没有手动定义构造函数,编译器会给你一个【“隐藏的默认构造函数”】如果数据成员使用了【类内初始值】......
  • C++ 输入一个英文字符串(一句话),统计输入的单词个数
    #include<iostream>#include<string>#include<windows.h>usingnamespacestd;intmain(){stringline;inti=0;//访问字符数组的下标intcoun......
  • C++ Linux下使用共享内存
    在Linux下可以使用SystemV共享内存段实现共享内存,一共有4个API:创建共享内存段或使用已经创建的共享内存段-shmget()将进程附加到已经创建的共享内存段-shmat()从已......
  • C++动态链接库(DLL)文件的创建和调用
    出处:蓟_可爱的叔https://www.cnblogs.com/wjq13752525588/p/16364956.html 一、什么是库    我们在编写C/C++等语言程序的时候,经常会遇到很多反复使用的或者......
  • c++标准IO 中的string流
    c++标准IO中的string流sstream头文件sstream头文件定义了三个类型来支持内存和string之间的IO,在用户看来,string类就像是一个IO流一样。istringstream处理行内的多......
  • 基于C++的OpenGL 10 之光照贴图
    1.引言本文基于C++语言,描述OpenGL的光照贴图前置知识可参考:基于C++的OpenGL09之材质-当时明月在曾照彩云归-博客园(cnblogs.com)笔者这里不过多描述每个名词......