今日学习:C++基础 第四天
this指针
不是const Test *
this指针是一个常指针,Test *const
成员函数尾部出现const 修饰的是this指针
如果想返回一个对象的本身,在成员方法中用 *this 返回
如果想对一个对象连续调用成员方法,每次都会改变对象本身,成员方法需要返回引用。
友元
如果一个全局函数经常访问类的私有成员,压栈出栈的开销会很大,可以声明为友元函数,便于访问类的私有成员
但它破坏了类的封装性和隐藏性
友元关系是单向的,不具有交换性
友元关系不能被继承,不具有传递性
重载规则
C++只允许重载已存在的操作符
不可用被重载的操作符
. .* :: ?:
重载不能改变操作符参数的个数
重载不能改变运算优先级
重载不能改变运算符的结合性
重载运算符的函数不能有默认的参数
operator++(Test &t) //重载前++
operator++(Test &t,int) //重载后++ ,int是占位符即亚元
左移右移操作符重载
ostream & operator<<(ostream & os, Test & c) //重载<<
{
os<<"("<<c.a<<","<<c.b<<")";
return os;
} //左移操作符<<只能写在全局,不能写在成员方法中
//否则调用的顺序会改变
istream & operator>>(istream &is,Test &c)
{
cout<<"a:";
is>>c.a;
cout<<"b:";
is>>c.b;
return is;
}