2 twinkle snow twinkle_snow 于 2016.04.08 16:38 提问

关于C++ 中&运算符的问题
#include<iostream>
#ifndef STRNGBAD H
#define STRNGBAD H
class StringBad
{
private:
    char *str;
    int len;
    static int num_strings;
public:
    StringBad(char *str);  //constructor
    StringBad();           //default constructor
    ~StringBad();
    friend std::ostream & operator <<(std::ostream & os , const StringBad & st);
};
#endif

求大神解释一下这一句:
friend std::ostream & operator <<(std::ostream & os , const StringBad & st);
那个&运算符是什么意思?以及括号中的参量?

4个回答

shallies
shallies   2016.04.08 16:49

在C++里面,&可以表示对变量的引用,作用有点像指针。比如:
int iVal;
int* pIVal=&iVal; //pIVal指向iVal
int& iVal2=iVal; //iVal2等同于 iVal
iVal=123;
printf("*pIVal=%d, iVal2=%d", *pIVal, iVal2); //输出结果: *pIVal=123, iVal2=123

qq423399099
qq423399099   Ds   Rxr 2016.04.08 17:18

friend std::ostream & operator <<(std::ostream & os , const StringBad & st);
这句话里的三个&全部都表示引用。
引用的优点:主要是在对对象、容器对象引用时才会体现他的优越性。比如传递参数为一个容器内对象引用,就不必再像按值传递那样,复制一个传递的对象,直接对该对象进行操作,同时也可以减少开销。
下面来说说重载的<<为什么要返回引用,我说你仔细想一下就明白了,你的函数会修改你操作的流,而流是全局的,不是临时变量,是系统托管的。如果不返回引用,后面对流的操作就是无效的了,因为你返回的只是某时流的一个拷备,以后对它的操作不会显示出来了。

CSDNXIAOD
CSDNXIAOD   2016.04.08 21:45

C++重载运算符问题
C++中的运算符重载问题
c++中运算符重载遇到的问题
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

PHONE3025
PHONE3025   2016.04.09 00:50

貌似这里是运算符重载…

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C标准库 assert
   C标准库的assert.ht头文件提供了一个名为assert的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。   已定义的宏assert指向另一个宏NOEBUG,宏NDEBUG不是&amp;lt;assert.h&amp;gt;的一部分。如果已在引用&amp;lt;assert.h&amp;gt;的源文件中定义NDEBUG为宏名称,则assert宏的定义如下:#define assert(ignore) ((...
关于static变量,请选择下面所有说法正确的内容
若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度 若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度 设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static
C语言嵌入式系统编程修炼
C语言嵌入式系统编程修炼,关于嵌入式中C的进阶
C语言:关于字符串的编程题
题目如下: You’ve gathered some e-mail addresses from a variety of sources, and you want to send out a mass mailing to all of the addresses. However, you don’t want to send out duplicate messages. You need
object c中关于继承代码示例
object c中关于继承代码示例,代码
C++中的异常处理.pdf
介绍关于 c/C++中的异常处理
蜂鸣器c程序
关于蜂鸣器c程序,在电子设计中可以用的到
关于C语言 关于C语言
关于C语言 关于C语言 关于C语言 关于C语言 关于C语言
关于C的题目
关于C的题目关于C的题目关于C的题目关于C的题目关于C的题目关于C的题目
C语言 解析URL
最近需要用到解析一个URL的合法性,找了半天发现C语言没有解析URL的库函数, 那么只好自己去写了。 在网上找了一段代码,非常好,亲测有效,特来分享! 转载地址:https://www.oschina.net/code/snippet_656503_12501 #include #include #include #include #define MAXN 1024+10