1 参数传递

两种形式:pass by value(值传递)/pass by reference(引用传递)

  • 1,建议能传引用的尽量都传引用(底层使用指针实现【32位或64位都是4个字节大小】),因此传递时比其他大部分变量都快(除了单个字符【一个字节】);
  • 2,不能使用引用传递的情况,当传递的值位局部变量时,无法传递引用;
    例如:
#include 

class A{
public:
A(int _data = 0):m_data(_data){}//默认实参 default argument
A& operator++(){//前++,可以作为左值
this->m_data++;
return *this;
}
A operator++(int){//后++,因为为临时对象,无法作为左值
A tempA(m_data);
m_data++;
return tempA;
}
void getData()const { std::cout<<m_data<<std::endl;}
private:
int m_data;
};

int main(){
A a;
a++;
a.getData();
(a++).getData();//返回的还是1

//测试临时对象
int n = 0;
//(n++) = 3;//报错,因为返回的是一个临时对象
++n = 4;

return 0;
}
  • 3,当传递的值,在原类中已存在,就可以传递引用,如上面的​​A& operator++()​​函数。
  • 4,传递者无需知道接受者是否以引用的方式接收。
    例如:
inline A& (){//返回类型为接受者
//...
return *this;//传递者
}