1.自定义类型不能直接使用流插入与流提取
为什么内置类型可以直接使用流插入与流提取?
其实本质上是人家已经写好了相关的函数,内置类型可以直接调用cout与cin
对于自定义类型,我们需要自己写相关的函数。
2.解决方法
2.1自己在类里面写一个流插入
ostream
是 C++ 标准库中的一个类,它代表了输出流(output stream)
但是还是不行
函数的参数顺序
为什么呢?因为参数的顺序匹配不上,在函数里面的参数为(&d1,ostream&out),
我们下面实际调用的时候参数为(ostream&out,&d1)
但是如果想改变类里面的函数参数的顺序,是不行的,因为this是隐藏的,我们也不能修改,this指针始终是类的方法里面的第一个参数
2.2类的方法写在全局中
但是这个时候依旧不行,要面临去访问私有成员的情况
2.3友元
这里可以用友元来解决这个问题,在我们的类里面去声明这个函数,并用上friend这个关键字。
大概意思就是这个函数是我的朋友,可以让他来访问类里面的私有成员变量。
这样全局函数就可以访问类里面的私有成员了。
2.4还有一个问题
两个类不能连续使用流插入,因为cout<<d1的返回值是void,
修改返回值,所以修改成下面这样就可以了
同理可得,流提取