C++ Primer学习笔记

本文介绍了C++中操作符重载的基本概念及其实现方法,特别是对重载输出操作符<<进行了详细的讲解,并通过一个具体示例展示了如何自定义类的输出方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 学习完一个知识点后写上自己的理解。算是总结吧,加深一下自己的印象,也可以在以后复习的时候方便查看

不喜欢按部就班的看一本书,一两百的都懒得看,别说C++ Primer这样的上千页巨书。今天从重载操作符开始看。发现一个又一个问题,然后再翻阅前面的章节去解决问题,解决的过程中再次发现问题,再次翻阅其他章节。喜欢这样的看书方式。可以让我安心的在电脑前坐一天,对于我来说很不可思议了。

加油加油!

14.1关于运算符的重载
存在的意义:目前看来就是因为操作符大部分是针对数据的,比如INT型,CHAR型,书中称为内置类型。而当类之间想要用操作符的时候,比如两个类的对象相加,那么就需要去重

载操作符了。重载操作符是为了类而存在的,所以,类型中至少有一个类类型。
重载操作符的定义:
这里把操作符当做函数来定义。只不过比平时的函数多加一个关键字operator。也需要参数和返回值。“类型 operator运算符(类型,类型。。。)”比如+,我们当+是一个函数

,它需要两个参数,X+Y,返回值就是X+Y的结果。
重载操作符可以作为非成员函数,也可以作为类的成员函数。当作为类的成员函数时,参数会少一个。那是因为隐式this指针。因为是在一个类中,所以第一个参数也就默认为是

这个类,所以不用标出。而是隐藏着THIS指针来表示。后面的参数就是要调用的其他的类型参数。

这是目前对已经学的知识的理解,其他的还需继续学习

14.2重载<<输出操作符
哈哈,很有成就感呢。
存在的意义:在输出类的时候直接用“cout<<类名”,这样会变的简便,不用死板的去只能输出变量。
用法:当然了,<<需要去像编辑函数一样编辑<<。
      ostream& operator <<(ostream& out,const 类名& s)
第一个参数。毫无疑问,需要定义成ostream类的引用。因为它代表了<<左侧的参数,也就是cout,cout当然是ostream类,为了避免复制,需要定义成引用。第二个参数,就是将

要输出的类。输出值是不应该再改变的,还有避免复制,所以用const的类的引用。返回值是ostream类,不知道什么原理,记下就是了。
下面就该编辑这个“函数”了
#include <iostream>
using namespace std;
class Check
{
public:
 void getdata(double ,int);
private:
 double book_id;
 int title;
 friend ostream& operator<<(ostream& out,const Check& s);
//<<的定义必须是非成员函数,因为如果是成员函数,就会省略第一个参数,上面提到的隐式this,表示第一个函数当前类的类型。而我们在使用<<的时候恰恰相反,需要cout在

左边,也就是ostream类是第一个参数。所以必须是非成员函数。从而需要友元它
};
void Check::getdata(double a,int b)
{
 book_id=a;
 title=b;
}
ostream& operator<<(ostream& out,const Check& s)
{
 out<<s.book_id<<"/t"<<s.title;
 return out;
}
int main()
{
 Check a;
 a.getdata(23,1);
 cout<<a;
 return 0;
}
因为书上只写了如何定义,没有写使用,于是自己摸索着使用成功,所以很高兴。继续下一章了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值