运算符重载:让自定义类型也可以正常使用各种运算符
重载函数格式:返回值类型+operator+运算符(第二个参数)
规则: 不能通过连接其他符号来创建新的操作符:比如operator@ 重载操作符必须有一个类类型参数
用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不 能改变其含义
作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐 藏的this
.* :: sizeof ?: .注意以上5个运算符不能重载。
插入流 <<
提取流 >>
自定义类型也是不可以直接使用这两个操作符的
因为这两个操作符也是只可以直接给内置类型使用,但是我们想要自定义类型也可以使用,是否可以也利用操作符的重载来实现呢?
首先我们要知道。cout是编译器自带类ostream的对象;cin是编译器自带类istream的对象;
那么如果想要实现的话,我们就要把隐藏指针变得可控,那么就只有不要用隐藏指针了(不要重载函数了),直接把函数写在类的外面
但是这样又出现了一个问题,类中的成员变量是私有的,在类外面是无法访问的
这里我们在类中添加友元函数就可以解决。
cin插入流的实现也是类似的
这里我们也可以看出以前用的输入输出,printf,和scanf是不可以重载实现自定义类型的使用的