C++基础知识(2):函数重载

        函数重载是一种特殊情况,C++允许在同一作用域中声明几个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。

1.函数重载的规则
  • 函数名称必须相同。
  • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
  • 函数的返回类型可以相同也可以不相同。
  • 仅仅返回类型不同不足以成为函数的重载。
2.运算符重载

所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载(Operator Overloading)也是一个道理,同一个运算符可以有不同的功能。运算符重载是通过函数实现的,它本质上是函数重载。允许重载的运算符:

运算符名称

运算符

双目算术运算符

+、-、*、、、%

关系运算符

==、!=、、=

逻辑运算符

||、&&、!

单目运算符

+、-、*(指针)、&(取地址)

自增自减运算符

++、–

位运算符

|、&、-、……、>

赋值运算符

=、+=、-=、*=、/=、%=、&=、!=、^=、>=

空间分配和释放

new、delete、new[]、delete[]

其他运算符

()(函数调用) 、->(成员访问)、->*(成员指针访问)、 ,(逗号)

不允许重载的运算符:

运算符名称

运算符

成员访问运算符

.

成员指针访问运算符

. *

域运算符

::

长度运算符

sizeof()

条件运算符

?:

运算符重载的形式有两种:重载函数作为类的成员,重载函数作为类的友元函数;根据运算符操作数的不同,双目运算符作为类成员函数,单目运算符作为类的成员函数,双目运算符作为类的友员函数,单目运算符作为类的友元函数。

  • 双目运算符作为友元函数时需要制定两个参数。
  • 运算符重载函数作为类成员函数可以显式调用。
3.常用运算符重载

(1)自增自减:

//前置运算符 ++a --a
operator++()
operator--()
operator++(Vector3 &v)
operator--(Vector3 &v)
//后置运算符 a-- a++
operator++(int)
operator--(int)
operator++(Vector3 &v,int)
operator--(Vector3 &v,int)

(2)赋值运算符:

String& String::operator=(String &s)
{
    if(this!=&s)
    {
        delete[] str;
        int length = strlen(s.str);
        str = new char[length+1];
        strcpy(str,s.str);
    }
    return (*this)
}

(3)输入\输出运算符重载:

friend ostream &operator<<( ostream &output,const Vector3 &v )
{
    output << "F : " <<v.m_x<< " I : " << v.m_y<<v.m_z;
    return output;
}

friend istream &operator>>( istream  &input, Vector3 &v )
{ 
     input >> v.m_x>> v.m_y>>v.m_z;
     return input;            
}

猜你喜欢

转载自blog.csdn.net/weixin_55238862/article/details/135324410