您当前的位置: 首页 >  c++

插件开发

暂无认证

  • 3浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++ 常用特征-重载运算符和重载函数

插件开发 发布时间:2022-03-15 08:43:50 ,浏览量:3

文章目录
    • 1.算法描述
    • 2.可重载运算符和不可重载运算符
    • 3.作者答疑

1.算法描述

  C++运算符在编程过程中,非常普遍,它采用一种更容易了解的方式编码目标逻辑。其本质是改变运算符的运算过程。在实现形式上分为两种,一种非类的成员函数,另一种是类的成员函数。先介绍第一种,非类的成员函数。以+号运算符为例,它涉及两个参数,加号的前面一个和后面一个,以及一个返回值。

object3 operator+(const object1 pre&, const object1 aft&);

例子程序如下:

class class1
{
public:
	class1()
	{
		para = 1;
	}
	~class1()
	{

	}

public:
	int para;
};

class class2
{
public:
	class2()
	{
		para = 2;
	}
	~class2()
	{

	}

public:
	int para;
};

class class3
{
public:
	class3()
	{
		para = 0;
	}
	~class3()
	{

	}

public:
	int para;
};

class3 operator+(const class1 c1, const class2 c2)
{
	class3 c3;
	c3.para = c1.para + c2.para;
	return c3;
}

void main()
{
	class1 c1;
	class2 c2;
	class3 c3 = c1 + c2;
}

  另一种类的成员函数,其中赋值运算符重载必须是类的成员函数,代码范例如下:

class class1;
class class2;
class class3;

class class1
{
public:
	class1()
	{
		para = 1;
	}
	~class1()
	{

	}

	class1 operator=(class2 c2);//赋值操作
public:
	int para;
};

class class2
{
public:
	class2()
	{
		para = 2;
	}
	~class2()
	{

	}

	operator class1();//强制类型转换 class2转class1
public:
	int para;
};

class class3
{
public:
	class3()
	{
		para = 0;
	}
	~class3()
	{

	}
	
	class3 operator-(void)
	{
		this->para = -this->para;
		return *this;
	}

	class3 operator++()//++前缀
	{
		this->para++;
		return *this;
	}

	class3 operator++(int)//++后缀
	{
		class3 c3 = *this;
		++this->para;
		return c3;
	}

public:
	int para;
};

class1 class1::operator = (class2 c2)
{
	this->para = c2.para;
	return *this;
}

class2::operator class1()
{
	class1 c1;
	c1.para = this->para;
	return c1;
}

class3 operator+(const class1 c1, const class2 c2)
{
	class3 c3;
	c3.para = c1.para + c2.para;
	return c3;
}

class3 operator (成员访问),,(逗号),

下面是不可重载的运算符列表:   .:成员访问运算符   .*, ->*:成员指针访问运算符   :::域运算符   sizeof:长度运算符   ?::条件运算符   #: 预处理符号

3.作者答疑

  如有疑问,请留言。

关注
打赏
1665481431
查看更多评论
0.0443s