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

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

posted on 2011-08-20 13:41 Daywei 阅读(1457) 评论(0)  编辑 收藏 引用 所属分类: C++之父力作学习笔记


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章档案

牛人博客

搜索

积分与排名

最新评论

阅读排行榜