您的位置:首页 > 编程语言 > C语言/C++

C++ Primer学习笔记

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

不喜欢按部就班的看一本书,一两百的都懒得看,别说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;
}
因为书上只写了如何定义,没有写使用,于是自己摸索着使用成功,所以很高兴。继续下一章了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: