C++基础语法学习(4)

1. 如果能作为左值则返回引用,例如a+b不能作为左值,a=b可作为左值,a++不能作为左值,其返回一个值,是常量,++a可作为左指,返回a这个变量

2.当无法修改左操作数的类时,使用全局变量进行重载,如<<和>>,因为无法修改ostream和istream,只能用友元函数进行重载,若用成员函数,成员变量会作为左值,而在cout中,成员变量只能作为右值,发生冲突

3.=,[],(),->只能用成员函数进行重载,在对类对象使用这几个操作符时,系统会调用成员函数中的重载操作符,如没有,则默认调用原先已经重载过的操作符,但当这几个操作符被声明为友元函数时,C++认为类中没有它们的重载,所以会去调用默认的重载,但又发现全局函数中的重载类型与其匹配,又要去调用这几个友元函数,所以会产生矛盾,C++是不允许出线这种情况的。

4.C++中通过一个占位参数来区分前置运算和后置运算,后置运算默认是有占位参数的那一个,前置是没有占位参数的那一个

5.不要重载&& ,||,会违背短路原则,如&&的第一个参数已经是零,但还是会运行后一个参数

6.友员函数重载运算符常用于运算符的左右操作数类型不同的情况

7.操作符重载是C++的强大特性之一
操作符重载的本质是通过函数扩展操作符的语义
operator关键字是操作符重载的关键
friend关键字可以对函数或类开发访问权限
操作符重载遵循函数重载的规则
操作符重载可以直接使用类的成员函数实现
=, [], ()和->操作符只能通过成员函数进行重载
++操作符通过一个int参数进行前置与后置的重载
C++中不要重载&&和||操作符

猜你喜欢

转载自blog.csdn.net/cb673335723/article/details/81233104