C++---多态性

    xiaoxiao2021-03-25  115

    1.多态性

    多态是操作接口的

    2.运算符重载

    对已有的运算符赋予更多的含义,使同一运算符作用于不同类型的数据导致不同的行为。运算符重载是对新类型数据的实际需要,对原有运算符进行适当的改造。 运算符的重载实际上就是函数的重载。 运算符重载的类型有两种,重载为非静态成员函数和重载为非成员函数。 运算符重载为类的成员函数的一般语法形式: 返回类型 operator 运算符(形参表) { 函数体 } 运算符重载为非成员函数的一般语法形式: 返回类型 operator 运算符(形参表) { 函数体 } 返回值类型:重载运算符的返回值类型,也就是运算符的结果类型 operator:定义运算符重载函数的关键字。 运算符:就是运算符的名称,必须是可以重载的运算符,比如重载加法运算符,就写“+”。 形参表:给出重载运算符 运算符重载举例---复数的四则运算 #include <iostream> using namespace std; class Complex { public: Complex(double r=0.0, double i=0.0):real(r),imag(i){} Complex operator+(const Complex &c2)const; Complex operator-(const Complex &c2)const; Complex operator*(const Complex &c2)const; Complex operator/(const Complex &c2)const; void display()const; private: double real; double imag; }; Complex Complex::operator+(const Complex &c2)const { return Complex(real+c2.real,imag+c2.imag); } Complex Complex::operator-(const Complex &c2)const { return Complex(real-c2.real,imag-c2.imag); } Complex Complex::operator*(const Complex &c2)const { return Complex(real*c2.real,imag*c2.imag); } Complex Complex::operator/(const Complex &c2)const { return Complex(real/c2.real,imag/c2.imag); } void Complex::display()const { cout<<"the real is: "<<real <<" the imag is: "<<imag<<endl; } int main() { Complex c1(4,5),c2(6,7),c3; int x=9; c1.display(); c2.display(); cout<<"the c2-c1: "; c3=c2-c1; c3.display(); c3=c2+c1; cout<<"the c2+c1: "; c3.display(); c3=c2*c1; cout<<"the c2*c1: "; c3.display(); c3=c2/c1; cout<<"the c2/c1: "; c3.display(); return 0; }

    其中的运算符+ 、-、*、/(B),都重载为类Complex的成员函数,定义Ccomplex的对象c1、c2,经过重载以后,表达式oprd1 B oprd2相当于 oprd.operator B(oprd2)。

    其中返回的时候,创建一个无名对象并返回:

    return Complex(real+c2.real,imag+c2.imag); //创建无名对象,并返回 这是临时的语法,含义是:调用Complex 构造函数创建一个临时对象并返回它。当然也可以用常规方式: Complex Complex::operator+(const Complex &c2)const { return Complex c4(real+c2.real,imag+c2.imag); //常规方式 } 复数运算符举例

    3.虚函数

    4.抽象类

    转载请注明原文地址: https://ju.6miu.com/read-19270.html

    最新回复(0)