运算符重载函数的调用格式与普通成员函数的调用格式类似,以双目运算符重载成员函数为例,其调用格式如下:左运算对象双目运算符右运算对象例如:对于前面的Complex,设计如下主函数:其中,“s3=s1+s2;”和“s4=s1-s2;”两个语句就是调用运算符重载函数。该函数执行完毕,释放tmp对象。......
2023-11-07
在C++语言中,重载指的是,同一个函数名或同一个运算符根据不同的对象可以完成不同的功能和运算。C++语言的重载机制包含两种类型:一种是函数重载,另一种是运算符重载。
函数重载是指同一个函数名可以对应多个函数的实现,即这些函数的函数名相同,但它们有不同的参数个数,或虽然参数个数相同但参数的类型不同。对于定义的重载某一函数名的多个函数,当调用这些函数时,必须明确调用的是哪一个函数,这个过程称为重载函数的绑定。C++语言中对重载函数的绑定,是在编译时由编译程序根据实参和形参的类型及个数进行最佳匹配,自动确定调用哪一个函数。
例如,可以给函数名add()定义多个函数实现,该函数的功能是求和,即求两个运算数的和。其中,一个函数实现是求两个int型数之和,另一个实现是求两个浮点型数之和,再一个实现是求两个复数的和。每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数类型不同,这就是函数重载的概念。
【例1.31】分析以下程序中重载函数的情况。
解:该程序中,main()函数中调用相同名字abs的两个函数,前面一个abs()函数对应的是一个int型数求绝对值的函数实现,而后面一个abs()函数对应的是一个double型数求绝对值的函数实现。abs()函数重载的概念如图1.10所示。(www.chuimin.cn)
图1.10 abs()函数重载
【例1.32】分析以下程序中重载函数的情况。
解:该程序用于找出几个int型数中最小者,其中出现了函数重载,函数名min对应三个不同的实现,函数的区分依据参数个数的不同,这里的三个函数实现中,参数个数分别为2,3和4,在调用函数时根据实参的个数来选取不同的函数实现。
有关C++程序设计基础教程的文章
运算符重载函数的调用格式与普通成员函数的调用格式类似,以双目运算符重载成员函数为例,其调用格式如下:左运算对象双目运算符右运算对象例如:对于前面的Complex,设计如下主函数:其中,“s3=s1+s2;”和“s4=s1-s2;”两个语句就是调用运算符重载函数。该函数执行完毕,释放tmp对象。......
2023-11-07
C++中下标运算符“[]”通常用于取数组的某个元素,下标运算符重载可以实现数组下标的越界检测等。重载下标运算符成员函数int&Assoc∷operator[]用于将单词及其次数添加到vec指向的区域中。......
2023-11-07
和构造函数一样,析构函数也不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用,其顺序与执行构造函数时的顺序正好相反。最后调用基类的析构函数,多个基类则按派生类声明时列出的逆序、从右到左调用,而不是初始化列表中的次序。首先执行派生类的析构函数,然后执行派生类成员对象的析构函数,再执行基类的析构函数,最后执行基类成员对象的析构函数。......
2023-11-07
内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置的。即使虚函数在类的内部定义,编译时仍将其看作是非内联的。声明虚析构函数的目的在于:使用delete运算符删除一个对象时,能确保析构函数被正确地执行。如果不相同,则被派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。......
2023-11-07
程序的执行结果如下:v1=(6,8)v2=(3,6)v1+v2=v1-v2=(3,2)2.重载双目运算符为类的友元函数运算符也可以重载为类的友元函数,这样,它就可以自由地访问该类的任何数据成员。假设有一个类A,对于双目运算符op,如果重载运算符op使之能够实现表达式“obj1 op obj2”,其中obj1和obj2均为A类的对象。将例4.5的类Vector中重载运算符改为友元函数实现。......
2023-11-07
声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。......
2023-11-07
函数模板是不能直接执行的,需要实例化为模板函数后才能执行。模板函数的生成就是将函数模板的类型形参实例化的过程。当执行min时,便创建了该函数模板的一个实例,这个过程被称为函数模板实例化。图5.2函数模板的实例化在模板函数被实例化之前,必须在程序的某个地方首先声明它,这样,就可以到后面再实例化为模板函数。......
2023-11-07
相关推荐