当前位置:编程学习 > C/C++ >>

C++之父力作学习笔记5——运算符重载

 在C++包含很多运算符,但以下几个运算符不能由用户定义:
      ::(作用域解析;)
      ,(成员选择)
      .* (通过到成员的指针做成员选择)
      ?:三元条件运算符
      sizeof和typeid

      运算符函数的名字是由关键字operator后跟对应的运算符构成的;例如operator<<。运算符函数的定义和使用都可以像其他函数一样。使用运算符不过是显示调用运算符函数的一种简写形式。例如 void f(complex a,complex b)
{
    complex c=a+b;  //简写
    complex d=a.operator+(b);//显示调用
}

      一个运算符函数必须或者是一个成员函数,或者至少有一个用户定义类型的参数(重新定义运算符new和delete的函数则没有此项要求)。这一规则就保证了用户不能改变原有表达式的意义,除非表达式中包含有用户定义类型的对象。特别的,不能定义只对指针进行操作的运算符函数。

      忠告:
      1.定义运算符主要是为了模仿习惯使用方式
      2.对于大型运算对象,请使用const引用参数类型
      3.对于需要访问表示的操作,优先考虑作为成员函数而不是作为非成员函数
      4.对于对称的运算符采用非成员函数
      5.将只有一个“大小参数”的构造函数做成explicit

      运算符重载的内容应该还是挺多的,但却不知道如何写,看来还是文笔太差了,有机会再补上吧。

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,