【BigHereo 34】---L7---运算符重载,流类库

2024-08-27 21:48

本文主要是介绍【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---运算符重载,流类库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112868

相关文章

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

【重学 MySQL】十九、位运算符的使用

【重学 MySQL】十九、位运算符的使用 示例检查权限添加权限移除权限 在 MySQL 中,位运算符允许你直接在整数类型的列或表达式上进行位级操作。这些操作对于处理那些需要在二进制表示上进行直接修改或比较的场景特别有用,比如权限管理、状态标记等。 &(位与) 对两个数的二进制表示进行位与操作。只有两个相应的二进制位都为 1 时,结果的该位才为 1,否则为 0。 |(位

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma