【c++】实现运算符的重载

// 实现运算符的重载

#include <iostream>
using namespace std;

class Int
{
	public:
		Int(int i = 0) :m(i)
		{
			cout << "constructed function" << endl;
		}
		~Int()
		{
			cout << "destructor" << endl;
		}
	public:
		Int operator+(const Int &d);
		Int operator-(const Int &d);
		Int operator*(const Int &d);
		Int operator/(const Int &d);
		Int operator|(const Int &d);
		Int operator&(const Int &d);
		Int operator^(const Int &d);
		Int operator~();
		Int operator++();
		Int operator++(int);
		Int operator--();
		Int operator--(int);
		void print();
	private:
		int m;
};

Int Int ::operator+(const Int &d)
{
	return Int(m + d.m);
}

Int Int::operator-(const Int &d)
{
	return Int(m - d.m);
}

Int Int::operator*(const Int &d)
{
	return Int(m * d.m);
}

Int Int::operator/(const Int &d)
{
	return Int(m / d.m);
}

Int Int::operator|(const Int &d)
{
	return Int(m | d.m);
}

Int Int::operator&(const Int &d)
{
	return Int(m & d.m);
}

Int Int::operator^(const Int &d)
{
	return Int(m ^ d.m);
}

Int Int::operator~()
{
	return Int(~m);
}

Int Int::operator++()
{
	return Int(++m);
}

//后置++
Int Int::operator++(int)
{
	return Int(m++);
}

Int Int::operator--()
{
	return Int(--m);
}

//后置--
Int Int::operator--(int)
{
	return Int(m--);
}

void Int::print()
{
	cout << m << endl;
}

int main()
{
	Int i(2);
	i = i + 1;
	i.print();
	i = i - 1;
	i.print();

	Int a, b(3), c(1);
	a = b + c;
	a.print();
	a = b - c;
	a.print();
	a = b * c;
	a.print();
	a = b / c;
	a.print();
	a = b | c;
	a.print();
	a = b & c;
	a.print();
	a = b ^ c;
	a.print();
	a = ~b;
	a.print();
	a = ++b;
	a.print();//4
	b.print();//4
	a = b++;
	a.print();//4
	b.print();//5
	a = --b;
	a.print();//4
	b.print();//4
	a = b--;
	a.print();//4
	b.print();//3
	return 0;
}// 实现运算符的重载

#include <iostream>
using namespace std;

class Int
{
	public:
		Int(int i = 0) :m(i)
		{
			cout << "constructed function" << endl;
		}
		~Int()
		{
			cout << "destructor" << endl;
		}
	public:
		Int operator+(const Int &d);
		Int operator-(const Int &d);
		Int operator*(const Int &d);
		Int operator/(const Int &d);
		Int operator|(const Int &d);
		Int operator&(const Int &d);
		Int operator^(const Int &d);
		Int operator~();
		Int operator++();
		Int operator++(int);
		Int operator--();
		Int operator--(int);
		void print();
	private:
		int m;
};

Int Int ::operator+(const Int &d)
{
	return Int(m + d.m);
}

Int Int::operator-(const Int &d)
{
	return Int(m - d.m);
}

Int Int::operator*(const Int &d)
{
	return Int(m * d.m);
}

Int Int::operator/(const Int &d)
{
	return Int(m / d.m);
}

Int Int::operator|(const Int &d)
{
	return Int(m | d.m);
}

Int Int::operator&(const Int &d)
{
	return Int(m & d.m);
}

Int Int::operator^(const Int &d)
{
	return Int(m ^ d.m);
}

Int Int::operator~()
{
	return Int(~m);
}

Int Int::operator++()
{
	return Int(++m);
}

//后置++
Int Int::operator++(int)
{
	return Int(m++);
}

Int Int::operator--()
{
	return Int(--m);
}

//后置--
Int Int::operator--(int)
{
	return Int(m--);
}

void Int::print()
{
	cout << m << endl;
}

int main()
{
	Int i(2);
	i = i + 1;
	i.print();
	i = i - 1;
	i.print();

	Int a, b(3), c(1);
	a = b + c;
	a.print();
	a = b - c;
	a.print();
	a = b * c;
	a.print();
	a = b / c;
	a.print();
	a = b | c;
	a.print();
	a = b & c;
	a.print();
	a = b ^ c;
	a.print();
	a = ~b;
	a.print();
	a = ++b;
	a.print();//4
	b.print();//4
	a = b++;
	a.print();//4
	b.print();//5
	a = --b;
	a.print();//4
	b.print();//4
	a = b--;
	a.print();//4
	b.print();//3
	return 0;
}

<img src="http://img.blog.csdn.net/20150508161939603?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

<img src="http://img.blog.csdn.net/20150508161752132?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

时间: 2024-10-29 12:27:04

【c++】实现运算符的重载的相关文章

C++ 运算符的重载

#include <iostream> #include <stdio.h> using namespace std; class Complex //复数类 { public: double real;//实数 double imag;//虚数 Complex(double real=0,double imag=0) { this->real=real; this->imag=imag; } }; Complex operator+(Complex com1,Comp

C++中关于指针运算符-&gt;的重载问题

#include<iostream>using namespace std;struct date{ int year; int month; int day;};struct Person{ string name; int age; bool gender; double salary; date birth; Person() {  cout<<"创建persond对象"<<this<<endl;  age=10; } ~Perso

运算符的重载(复数的相关运算)

运算符的重载实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该重载的运算符时调用此函数.这个函数叫做运算符重载函数,通常为类的成员函数.    定义运算符重载函数的一般格式: 返回值类型 类名::operator重载的运算符(参数表) {--} operator是关键字,它与重载的运算符一起构成函数名.因函数名的特殊性,C++编译器可以将这类函数识别出来. 具体的加减乘除等代码运算如下: #include<iostream> #include<string>

对下标运算符[]和函数调用运算符()的重载

一.对下标运算符[]的重载: 重载的格式:返回类型 类名 operator [](参数): #include<iostream> using namespace std; class A { public: A(int n); ~A(); int & operator [](int n);//返回类型为int & 引用类型 private: int *p; int size; }; int & A::operator[](int n){ return p[n];//返回

自增自减运算符的重载(强制类型转换运算符重载)

前置运算符重载为一元运算符,后置运算符重载为二元运算符. Operator int() { return n; } int作为一个强制类型转换运算符被重载, Demo s; (int)s;       //等效于s.int(): 强制类型转换运算符重载时, 不能写返回值类型 实际上其返回值类型----强制类型转换运算符代表的类型 只能作为成员函数,不能作为友元函数或普通函数 转换构造函数和类型转换运算符有一个共同的功能:当需要的时候,编译系统会自动调用这些函数,建立一个无名的临时对象(或临时变量

深入理解运算符的重载

*运算符重载: 1.运算符重载就是赋予已有的运算符多重含义,即多种功能. 2.运算符重载的目的:通过运算符的重载即重新定义使得其能够用于特定类的对象执行特定的功能. 3.对于运算符的重载首先要关心的就是那些运算符能够重载,那些不能重载: 能够重载的运算符: (1).算术运算符:+,-,*,/,%,++,--: (2)位操作运算符:&,|,^,~,<<,>>: (3)逻辑运算符:!,&&,||: (4)比较运算符:>,<,>=,<=,=

【C++】一些基本的运算符的重载

// 实现运算符的重载 #include <iostream> using namespace std; class Int { public: Int(int i = 0) :m(i) { cout << "constructed function" << endl; } ~Int() { cout << "destructor" << endl; } public: Int operator+(cons

结构体类型快速驱魔运算及运算符的重载

下面得到这段代码可以用在很多地方:只需要自己修改下接Ok. 1 struct Matrix 2 { 3 long long mat[N][N]; 4 Matrix operator*(const Matrix m)const//定义矩阵乘法的运算符* 5 { 6 Matrix tmp; 7 for(int i = 0;i < n;i++) 8 { 9 for(int j = 0;j < n;j++) 10 { 11 tmp.mat[i][j] = 0; 12 for(int k = 0;k &

C++ 运算符的重载(转载自http://blog.csdn.net/insistgogo/article/details/6626952)

(转载自http://blog.csdn.net/insistgogo/article/details/6626952) 什么是运算符的重载? 运算符与类结合,产生新的含义. 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义) 怎么实现运算符的重载? 方式:类的成员函数 或 友元函数(类外的普通函数) 规则:不能重载的运算符有 .  和 .* 和 ?: 和 ::  和 sizeof 友元函数和成员函数的使用场合:一般情况下,建议一元运算符使用成员函数,二元运算符使