本文主要是介绍【BigHereo 34】---L7---运算符重载,流类库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
L7---运算符重载,流类库
一,【前言】
1,什么是运算符重载?
2,运算符重载要用什么来表示呢?
3, 如果要能访问另一个类私有成员的方法?
4, 运算符重载的特性?
5,不能重载的运算符有哪些?
思维导图如下:
二,【问题详解】
1,什么是运算符重载?
2,运算符重载要用什么来表示呢?
解答: operator
3, 如果要能访问另一个类私有成员的方法有哪些?
解答:
4, 运算符重载的特性?
解答:
5,不能重载的运算符有哪些?
6,istream和ostream的基类是什么?
解答: 基类是ios
7,流的分类分为 四种, 是哪四种?
解答: cin ,cout, clog, cerr.
8,Myfile文件和myTest.txt文件进行关联,代码怎么写?
解答:
9,关于运算符重载, 完整的实现str类的例子:
#includel<iostream>
#include<string>Usingnamespace std;
Class str{Private:Chat *st;Public:Str(char *s); //使用字符指针的构造函数Str(str &s); //使用对象引用的构造函数Str & operator=(str & a); //重载使用”对象引用”的赋值运算符Str& operator=(char *s); //重载使用”指针”的赋值运算符Void print(){cout<<st<<endl;} //输出字符~str() {delete st;}};
Str :: str(char *s){St=new char[strlen(s)+1]; //为st申请内存Strcpy(str, s); //将字符串s复制到内存区st}
Str:: str(str &a){Str=newchar[strlen(a.st)+1]; //为st申请内存strcpy(st, a.st); //将对象a的字符复制到内存区st}str& str::operator=(str& a){If(this==&a) //防止 a=a 这样的赋值return * this; //a=a,退出delete st; //不是自身,先释放内存空间st=new char[strlen(a.st) +1]; //重新申请内存strcpy(st,a.st); //将对象a的字符串复制到申请的内存区return *this; //返回this指针的对象}str & str::operator=(char *s){delete st; //是字符串直接复制,先释放内存空间st=new char[strlen(s)+1]; //重新生成内存strcpy(st, s); //将字符串s复制到内存区st.return * this;}
}
下面是测试程序:
Void main(){Str s1(“We”),s2(“They”), s3(s1); //调用构造函数和复制构造函数S1.print();s2.print(); s3.print(); S2=s1=s3; //调用赋值操作符S3=”Gohome”! //调用字符串复制操作符S3=s3; //调用赋值操作符但不进行赋值操作.S1.print();s2.print(); s3.print();
}
三,【小结】
到这里,C++的基本语法,基本的理论知识体系就完了,语言基本都是相通的.从结构到类,对象,函数与函数模板再到面向对象继承和派生, 还学习的多态性的虚函数,运算符重载以及流类库,向量等等.
希望我的总结能对能有所帮助, 还希望您能提出宝贵以及, 以便我能改进.
这篇关于【BigHereo 34】---L7---运算符重载,流类库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!