Chapter 10 Operator Overloading

Posted 脂环

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chapter 10 Operator Overloading相关的知识,希望对你有一定的参考价值。

  1. 重载为成员函数

双目:

class ClassName

{

public:

 DataType operator@(Parameter List); …

};

DataType ClassName::operator@ (Parameter List) { … }

 

aa@bb    //or aa . operator @ (bb)

 

单目:

class ClassName

{

public:

DataType operator@(  ); …

};

DataType ClassName::operator@ (  ) { … }

@aa    //or aa.operator @ ( )

默认为前置

Complex operator ++ ( );

后置的话形参列表里有一个int,本身无作用只是为了区分

Complex Complex∷operator ++ ( int )

c2=c1++; //or c2=c1.operator++(0);

 

  1. 重载为友元函数

class ClassName

{

public:

friendDataType operator@(Parameter List); …

 };

DataType operator@ (Parameter List) { … }

aa@bb    //or operator @ (aa , bb)

默认为前置Complex operator ++ (Complex &c )

后置的话同理Complex operator ++ (Complex & c, int )

 

  1. 重载为成员函数:

双目运算符参数列表有一个参数,单目运算无参数

重载为友员函数:

双目运算符参数列表有两个参数,单目运算有一个参数

 

  1. Rules for Operator Overloading 

can not define newoperators 

can not change the numberof operands 

can not change the precedence 

can not change the associativity(结合性) 

can not have default parameters “=”, “( )”, “[ ]”

can only be overloaded as member functions “.”, “.*”, “::”, “sizeof”, “?:” can not be overloaded

 

  1. 重载赋值运算符

ClassName&ClassName::operator =( const ClassName & source )

{

real= source.real; imag= source.imag; return *this; //注意返回值

}

 

  1. 重载输入输出运算符

重载为友元函数 friend ostream & operator <<(ostream & , ClassName & );

 

ostream & operator <<(ostream & , ClassName & )

{  

output<<“( ”<<c.real<<“ , ” <<c.imag<<“i )” <<endl;

return output;//注意返回值

 }

 

friend istream & operator >>(istream & , ClassName & );

istream & operator >>(istream & input, Complex &c)

{

cout<<“Input the real part and” <<“imaginary part of a” <<“complex number:”; input>>c.real>>c.imag;

return input;

 }

 

  1. 强制类型转换?

class ClassName{ public: operator DataType( ); … }

以上是关于Chapter 10 Operator Overloading的主要内容,如果未能解决你的问题,请参考以下文章

Python Chapter 10: 列表 Part3

BDA chapter 10

chapter 10System-Level I/O

Chapter 3 Phenomenon——10

Chapter 2 Open Book——10

Chapter 4 Invitations——10