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;//传递者
}