问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++重载运算符。 太TM难了。 进来看看

发布网友 发布时间:2022-05-25 08:57

我来回答

5个回答

热心网友 时间:2024-10-21 02:56

看来你是前面的没学懂,你问的这几个问题根本就与重载的操作符函数无关
&是引用,引用说白了就是对变量取了个别名,比如int a=1; int &b=a; 这时随便你在哪里使用名称b就和使用a一模一样。

ostream &os; //这句的意思是,os&是ostream类型的一个引用,至于他引用的是哪个变量,这要看函数传递过来的实参了,在这里ostream是一个类,是在C++库文件中写的一个类,他是使用class创建的,比如class ostream{...};当然,这个类里的具体内容就不讲了吧。

friend ostream& operator<<(ostream& os,const Date t)
这是一个函数头,也就是说他是一个函数,这个函数的名称是operator <<,你要记住的是重载操作符运算符函数,是叫函数,他和普通函数一模一样,但有一些*,使用方法可以和普通函数一样(当然还有他的特殊用法)。就拿这个题来说,假设重载的<<是类Date的友元,则可以这样调用这个函数Date ma; cout<<ma; 或者operator<<(cout, ma); 语句cout<<ma会被自动转换为operator<<(cout,ma)的形式的。
因此,这里是声名了一个函数,其名称是operator <<,他有两个形参, 一个是ostream 类型的引用,一个是Date类的对象,这个函数反回ostream&类的引用,同时他是某个类的友元函数

友元函数:友元函数其实也没那么难,一个类的友元函数就是说这个函数可以访问类的私有成员而已。举例,假设你这个重载的<<不是友元,假设他的形式为ostream & operator <<(ostream &os){....},假设他是Date类的成员函数,则Date ma; ma<<cin; 语句ma<<cout会被自动转换为ma.operator<<(cin);的形式,注意:在这种转换方法中,最左边的对象是调用操作符成员函数的对象,也就是不能写成cout<<ma这样的形式。

友元函数和成元函数的区别还在于,友元函数是一个独立的函数,他不能通对类的对象来调用(即点运算符)比如函数g()若是类A的友元函数,则A ma; ma.g();是错误的,因为函数g()不是类A的成员,再如若函数f()是类A的成员函数,也就是class A{public:....void f(){}...}; 然后A ma; 则ma.f();是正确的,因为函数f()是类A的成员。

注:cout和cin都是C++中iostream类的一个对象,对于cout<<使用的<<运算符,是在类中被重载了的,因此<<运算符就是一个重载的操作运算符。

将操作符重载函数声明为友元时,这时的操作符重载函数必须多一个形参,若操作符成员函数是类的成员函数,则要少一个形参,还有,有些操作符重载函数必须声明为友元才能达到目的。除了参数多一个和少一个之外没什么区别。

模板,一般来讲比较重要,因为用模板写的程序基本不上用考虑这个数据是什么类型(int, float, char等)。
STL也可以看看,这个比较容易。

若还有不明白就百度搜索《C++操作符重载专题》和《C++模板专题》应该对你有帮助。

热心网友 时间:2024-10-21 02:57

首先,我也是初学C++,说的不好的话,请见谅!!

以我的理解
1.重载<<运算符是必须使用友元函数的,因为如果你使用的是成员函数,参数列表的第一个参数就是本类的对象,而<<该运算符重载时,第一个参数必须是ostream的对象或者其引用
2.io指的是input输入和output输出,所以ostream就是输出流,istream就是输入流,在JAVA中会比较明显,用inputstream表示输入流,用outputstream表示输出流,其实也就是命名的不同而已
3.&表示引用,也就是某某东西的别名,与某某东西占用同一个地址空间,不同于取址&,这里用&于C++类库的ostream输出流的对象占用了同一个地址的话,你修改之,他才会被修改,不然,如果你不同&引用的话,就是开辟一个新的存储单元,也就是副本,你修改了输出方式,他类库的方式还是没有修改,后面再用cout输出,就没什么意义了。达不到效果
4.这是不是所谓的高级应用我就不知道了,我是学JAVA的,现在改C++,在一个入门书学的,这些内容都有,理解起来不难!

另外要说的是,其实我们用C++的cout输出一个东西,其实cout就是类库里面的一个ostream对象,那你用这个cout对象输出东西的时候,就用到了一个运算符<<,那现在我重载这个运算符的话,相当于,我传递进去的第一个ostream对象就是cout,这样说,其实你重写<<中第一个参数的ostream就是告诉编译器,我有一个otream对象cout要传递进去啦,就这么简单!!那为什么要返回一个cout呢?因为你用cout输出时,有可能带有几个<<,比如cout<<a<<b<<endl;那么你用cout<<a的时候返回一个cout,再用这个cout去<<b才行吧?不然你第一个输出a后,没有返回cout,怎么输出b?
满意就采纳吧,我快没财富了,呵呵!

热心网友 时间:2024-10-21 02:57

首先,C++模板是支撑C++许多高级优秀特性的基础,也是最令C++被人诟病的特性之一。STL是这些优秀特性的代表之一,尽管我不认为STL够优秀,看看优秀的boost库吧,你会更晕的。
其次,STL相当重要,其意义是使开发者得以抛开对许多细节的关注,集中精力解决目标问题。当STL不适用的时候,如果不用STL那么就得重新面对数据储存、排序、查找这些细节了。当然这些细节对学习者来说就是基础。STL重不重要还是自己说吧。
再次,类模板和函数模板是为了解决泛型问题推出的,即可以就处理所有类型的共同方式编写统一代码,不必逐一针对不同数据类型(光整型数就多少种自己数)逐一处理的问题,看情形觉得是否需要使用,但有些情形确实不适用类模板。就比如LZ提的输出日期类,显然它跟输出数值的手法还是有区别的。
再再次,LZ给的代码有问题,是书上的吗?改了下
friend ostream& operator<<(ostream& os,const Date& t)
{
os << "Month: " << t.iMonth << ' ' ;
os << "Day: " << t.iDay<< ' ';
os << "Year: " << t.iYear<< ' ' ;
return os;
}
这是重载输入输出运算符的标准手法,如果LZ不知道&是什么意思,建议停止向前学习,返回复习关于对象引用的基础内容吧。这样做是为了类接口友好,可以用cout<<来输出类。不过挑日期啊时间啊这种涉及本地化难题的例子这样做是最不合适的,就不细说了。
最后,关于LZ的ID,不如"大便GB2312“来得讽刺一些。^_^

热心网友 时间:2024-10-21 02:58

Standard STL 不要学, 把 POSIX 和SandardCLibrary 搞会就够了。
最重要不是别的,而是在达到目的的过程中保持清醒。

其实同样的效果,这段代码也能做到:

FILE* print(Date t){
printf("Month:%d \nDay:%d \n Year:%d \n",t.iMonth,t.iDay,t.iYear);
}

用法从 cout<<((Date)ref)
改成 print(ref)

热心网友 时间:2024-10-21 02:58

额。&表示隐用,就是说这个函数里面传入的os就是os类如果在这个函数中对os进行修改其中的某些属性或者行为会被修改,然后os
表示的是你传入的一个参数
这个参数的类型为ostream &型应该是一个类的隐用型,
这个运算符重载是对<<进行,执行的结果应该就是在每次返回一个友缘类的同时输出一个Data类中的属性不懂再问
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...每次文字比较多超出屏幕大小就不知道怎么截屏,求教大佬! 我国政策性 广西明士清医疗器械有限公司怎么样? 广西禾力药业有限公司怎么样? 广西龙母圣商贸有限公司怎么样? 安徽合肥有什么去痔的好地方 我女朋友的谷丙转氨酶过高(达到121),而且两对半检测为阴性,是肝功能有... 泸州丽人女子医院开展科室 自由之子本次世界杯是否将在小组赛中被菜? 世界杯谁会嬴 求高清少女时代mr.mr壁纸,全体和郑秀妍单独的也行 大家帮忙看看秀的文财神放哪里好,60宽90长,放那个位置好 看看优秀的孩子是怎样培养出来的 我是应届生,非学人力资源的,但是想求职人力资源方面的工作,想看看... 想看看优秀的家具设计作品,有什么网站可以看嘛 英雄联盟视频网站,要高清的谁知道 老板让你写报告,你却执笔犯难,优秀的工作报告长什么样? ...厉少夫人是总裁》txt下载在线阅读全文,求百度网盘云资源 济宁哪有卖京剧脸谱中国结 电脑看看秀的视频有吗?还可以聊天的! 《早安傲娇BOSS》txt下载在线阅读全文,求百度网盘云资源 《我又轰动全球了》txt下载在线阅读全文,求百度网盘云资源 ...电影票 今晚的、本来想和朋友去的可是她说有事去不了,还能退吗... 手机卡卡在卡槽里了? 什么女孩子最好? 女孩子吃什么最好呢? 女孩子应该做什么好 什么样子的女孩子好呢? 专升本建档立卡佐证材料上传不了 甘肃省建档立卡户在广东读大学专升本怎么录取? 石家庄铁路职业技工学校老师带你去看看优秀毕业生 2010年的选秀看看我适合什么 最近迷上了古琴,总想去看看表演,呵呵,听说茶馆有,大家给个推荐吧... 蠢蛋搞怪秀3D下载 蠢蛋搞怪秀3D高清迅雷下载观看 ...没有关于中小学英语优质课教学视频的网站?想看看优秀的英语老师是怎... 圣诞节迟志强在那里演出 ...提高旅游质量!丰富夜生活!灯光秀看看长沙摩天轮夜景 请专家看看秀成这样了,还有价值吗 肉眼能看到红光手机拍照看不见是监控吗 江苏各个城市事业单位考试时间是一样的吗 换是什么音节能组什么词语? 门越重等于门越好,这个说法正确吗? 门是重的好,还是轻的好 木门重好还是轻好 防盗门有多重?是不是越重越好? 推拉门重好还是轻好 在挑选门时,拥有哪些特点的门隔音效果会更好? 家里防盗门是不是越厚越好 吃货单词可以复制粘贴的 胡桃木的实木门门一般多重?实木门是不是越重越好?