当前位置:首页 > 科技 > 正文

为什么要重载输出运算符(ostream重载为什么要)

为什么要重载输出运算符(ostream重载为什么要)

其实ostream重载为什么要的问题并不复杂,但是又很多的朋友都不太了解为什么要重载输出运算符,因此呢,今天小编就来为大家分享ostream重载为什么要的一些知识,希望...

其实ostream重载为什么要的问题并不复杂,但是又很多的朋友都不太了解为什么要重载输出运算符,因此呢,今天小编就来为大家分享ostream重载为什么要的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

c++重载输入输出符返回类型istream和ostream为什么要加上&符号?_百度...

这样返回的就是一个引用,也就是对象本身。如果返回值,那么返回时会调用 构造函数,产生临时对象,然后销毁,这样就增加了 开销。

本人理解,其运算符重载函数的返回类型之所以设置为引用,主要是为了提高程序运行效率。当然,也有的是因为operator类的实现问题所致,比如,VC0中不使用std名字空间时,ostream对象是不能 的,此时返回类型就必须为引用。

返回类型必须是istream是因为重载流插入和提取运算符的运算符函数,不能作为类的成员函数,只能作为普通函数。istream和ostream分别是输入流类和输出流类。重载流提取运算符的函数第一个参数和返回类型必须是istream&类型。

重载输入操作符 与输出操作符类似,输入操作符函数的第一个形参为流的引用,第二个形参为类类型对象的引用(非const,因为 的目的就是将数据读入到该对象中)。

运算符重载的目的:要使程序员自己定义的类所实例的对象,能像int,char等基础类型进行加减乘除、赋值、输入输出等运算。

重载为类的成员函数

1、原则:用成员函数重载一元及与赋值有关的运算符,其中“=、()、[]、-、-*”必须用成员函数重载;用全局函数重载与赋值无关且不是必须用成员函数重载的二元运算符。

2、一般情况下,重载为类的成员函数是较好的选择,但有时候重载为成员函数不能满足使用要求,重载为全局函数又不能满足访问类的私有成员。

3、除此外,重载并不仅限于类的成员函数,不归属于类的函数,包括全局函数和静态函数,所有函数都可以重载,即函数名相同,参数表不同。

4、对于双目运算符,若重载为类的成员函数,有1个参数;若重载为友元函数,则有2个参数。

5、操作符重载作为成员函数一般都是一个或零个参数的,因为A+B,就解释成了A.operator+(B)。另一种写法就是友元,加了友元可以认为是非成员函数,所以就可以写成2个参数的形式了。

6、所以重载为友元函数需要两个参数,通过参数传递的方式得到参加运算的两个对象。其他的是重载为类的成员函数,由于对象本身代表了一个操作数,所以其参数只需要一个,其为参加运算的另一个操作数。

c++中重载输出操作符,为什么要返回引用

1、为什么要返回引用,我说你仔细想一下就明白了,你的函数会修改你操作的流,而流是全局的,不是临时变量,是 托管的。

2、引用是为了让形参和实参统一,其中一个改变,被引用的也会改变!运算符也一样!比如,a + b这个表达式,在计算机里编译的时候看作为:a.operator+(b),就要求‘+’号是需要引用的。

3、因为赋值操作会改变左值,而+之类的运算符不会改变操作数,所以说赋值运算符重载要返回引用以用于类似(a=b)=c这样的再次对a=b进行写操作的表达式。

4、引用&符号的用意都是为了绑定不同的”变量“,使它们指向同一块内存 ,从而保证操作的一致性,即对任何一个被绑定的变量作处理,那么被绑到同一块 的另外一个变量也就进行了相同的处理。

5、本人理解,其运算符重载函数的返回类型之所以设置为引用,主要是为了提高程序运行效率。当然,也有的是因为operator类的实现问题所致,比如,VC0中不使用std名字空间时,ostream对象是不能 的,此时返回类型就必须为引用。

c++中istream和ostream的重载有什么意义啊,感觉用处不是太大

1、istream是一个类,它定义了一个名为cin的对象。ostream也是一个类,它定义了一个名为cout的对象。

2、其次,运算符“”“”要求函数的第一个参数和函数的类型都必须是istream&和ostream&类型,这是因为要连续输出时要求的,谭浩强书里有讲到 所以不能把他们重载为成员函数,只能重载为友元函数或普通函数。

3、这样返回的就是一个引用,也就是对象本身。如果返回值,那么返回时会调用 构造函数,产生临时对象,然后销毁,这样就增加了 开销。

4、意思是程序输出内容(流)送入屏幕等输出设备。

C++重载=,+=等时候为什么要用返回引用

引用是为了让形参和实参统一,其中一个改变,被引用的也会改变!运算符也一样!比如,a + b这个表达式,在计算机里编译的时候看作为:a.operator+(b),就要求‘+’号是需要引用的。

为什么要返回引用,我说你仔细想一下就明白了,你的函数会修改你操作的流,而流是全局的,不是临时变量,是 托管的。

要看它重载的运算符操作完之后需要一个什么结果,如果你是重载赋值运算符或者运算符,你最好返回一个引用,因为这样就能做出形如cout 这样的“拼接”。

本人理解,其运算符重载函数的返回类型之所以设置为引用,主要是为了提高程序运行效率。当然,也有的是因为operator类的实现问题所致,比如,VC0中不使用std名字空间时,ostream对象是不能 的,此时返回类型就必须为引用。

解释提问者的问题,问题不在于你返回的对象还是对象的引用,问题处在你定义的方法的返回值类型不对,这是有要求的,那么在哪里要求的呢,现做如下说明供参考。

举个例子,对于cout,如果你只是单纯这样用:coutHello World!;显然重载的运算符返回值是不是引用没有多大意义。

C++中,out表示 ,数据类型是ostream

关于C++中的重载,对于输出流的重载。ostream &operator(ostream&out,const people&r);你这个算是标准写法了:1)为了支持连续,输出必须返回一个ostream的引用。如:coutab;连续输出。

也就是说,你看到的out是你的程序的某个地方定义的一个对象,它支持运算符。

你说的in和out是istream和ostream是输入流和输出流,这些是很有用的,例如将要读取的文件当做输入流一个字节一个字节处理,或者将网络上传输来的数据当做流来一个字节一个字节的处理。

ios是一个类,其中包含了很多的东西,如果有兴趣可以去跟踪一下,在iostream。h-istream。

ostream是个定义了输出流的类,用于输出的,不是标准输出,标准输出是cout,ifstream和ofstream分别是从istream和ostream继承来的,只不过他们的作用对象是文件流而已。

如果你还想了解更多这方面的信息,记得收藏关注本站。

最新文章