【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++的基本语法,基本的理论知识体系就完了,语言基本都是相通的.从结构到类,对象,函数与函数模板再到面向对象继承和派生, 还学习的多态性的虚函数,运算符重载以及流类库,向量等等.

 

   希望我的总结能对能有所帮助, 还希望您能提出宝贵以及, 以便我能改进.

 

 

 

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值