c++运算符重载中的两种形式以及常引用的使用

下面是c++运算符重载的两种形式:

形式1:

Point operator + (const Point& A,const Point& B)
{
  return Point(A.x+B.x,A.y+B.y);
}

形式2:

ostream& operator << (ostream& out,const Point& p)
{
  out<<'('<

1.形式1返回的是一个变量,常用的场合是两个数据运算后得到第三个数据,不改变原来两个数据。以加法为例:A+B->C

形式2返回的是一个引用,常用的场合是两个数据运算后把结果存入到其中一个数据中,需要改变原来某一个的值。以输出流运算为例:cout<cout(新的)

2.由上面可知,形式2中我们希望改变cout的值,因此把形参声明为ostream型的引用。但是,为什么另外一个形参(包括形式1中的形参)为什么要申明为引用呢?

原来,通常形参采用引用传递,是由于类对象占用内存较大,引用传递时,无需在栈内存中开辟空间以装载临时对象,也省去了复制的耗时过程,为了避免改变形参的内容,还需配以const加以修饰。由于是引用,如果改变了形参,那个实参也会跟着改变。

你可能感兴趣的:(c/c++)