3DProgramming第六次课C++多态性20210915

本文介绍了C++中的多态性,包括虚函数、纯虚函数、抽象类以及运算符重载的概念和应用。重点讨论了如何重载运算符,如双目和单目运算符,并解释了虚函数在动态绑定中的作用,以及何时需要使用虚析构函数。同时,还探讨了抽象类在设计和组织继承层次结构中的重要性。
摘要由CSDN通过智能技术生成


一、多态性

  • 多态性是指同样的消息被不同类型的对象接收时导致的不同的行为。
  • 消息就是对类的成员函数的调用。
  • 不同的行为是指不同的实现,也就是调用了不同的函数。
  • 多态的实现:函数重载(&、const也可以构成重载函数)、运算符重载虚函数

二、运算符重载

  • 可以重载C++中除了下列运算符外的所有运算符: . 、 .* 、 :: 、 ?:
  • 只能重载C++语言中已有的运算符,不可以臆造新的。
  • 不可以改变原运算符的优先级和结合性。
  • 不能改变操作数个数
  • 经重载的运算符,其操作数中至少应该有一个是自定义类型。

两种形式:
1、重载为类成员函数
2、重载为友元函数

  • 声明形式
    函数类型 operator 运算符(形参)
    {

    }

  • 重载为类成员函数
    参数个数=原操作数个数-1后置++、- -除外

  • 重载为友元函数
    参数个数=原操作数个数,且至少应该有一个自定义类型的形参。

-双目运算符 +
如果要重载 + 为类成员函数,使之能够实现表达式 oprd1 + oprd2,其中 oprd1 为A 类对象,则 + 应被重载为 A 类的成员函数,形参类型应该是 oprd2 所属的类型。
经重载后,表达式 oprd1 + oprd2 相当于 oprd1.operator +(oprd2)

#include<iostream>
using namespace std;
class complex	//复数类声明
{
   
public:	//外部接口
	complex(double r=0.0,double i=0.0){
   real=r;imag=i;}                                                                //构造函数
	complex operator + (complex c2); //+重载为成员函数
	complex operator - (complex c2); //-重载为成员函数
	void display();	//输出复数
private:	//私有数据成员
	double real;	//复数实部
	double imag;	//复数虚部
};	

complex complex::operator +(complex c2) //重载函数实现
{
   
	complex temp;
	 temp.real=c2.real+real;
	 temp.imag=c2.imag+imag;
	return complex(temp.real, temp.imag);
}

complex complex::operator -(complex c2)  //重载函数实现
{
   
	complex c;
	c.real=real-c2.real;
	c.imag=imag-c2.imag;
	return complex(c.real,c.imag);
}

void complex::display()
{
      cout<<"("<<real<<","<<imag<<")"<<endl; }

void main()     //主函数
{
   	complex c1(5,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值