00问答网
所有问题
c++中的重载运算符<<和>>为什么是只可以为友元函数,不可是成员函数?我觉得没问题呀,
我是觉得将cout和另外的参数直接传进istream类中的operator<<()函数中不就可以啦
举报该问题
推荐答案 推荐于2018-04-05
如果是重载双目操作符(即为类的成员函数),就只要设置一个参数作为右侧运算量,而左侧运算量就是对象本身。。。。。。
而 >> 或<< 左侧运算量是 cin或cout 而不是对象本身,所以不满足后面一点。。。。。。。。就只能申明为友元函数了。。。
如果一定要声明为成员函数,只能成为如下的形式:
ostream & operator<<(ostream &output)
{
return output;
}
所以在运用这个<<运算符时就变为这种形式了:data<<cout;
不合符人的习惯。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://00.wendadaohang.com/zd/nBBeeeejZBeInIjjnj.html
相似回答
求助
,C++中为什么
有些函数只能用
成员函数重载,
而有些函数则只能用
友元函
...
答:
你说的是操作符重载吧
, 操作符重载函数,说白了还是一个成员函数。 和普通的成员函数调用一样。 我们知道,类的成员函数必须通过对象才可以调用,比如 [] 运算符。class test{ public:int operator[](int pos);};要调用 [] 运算符重载成员函数,必须有一个test的对象,否则就没法调用它啦。所...
为什么
赋值
运算符
只能作为
成员函数
进行
重载,
而不能作为
友元函数重载
...
答:
C++
规定=,[ ],(),->这四个运算符只能被
重载为
类的非静态
成员函数,
其他
的可以
被
友元重载
,主要是因为其他
的运算符重载函数
都会根据参数类型或数目进行精确匹配,这四个不具有这种检查的功能,用友元定义就会出错
...<<和>>
为什么是只可以为友元函数,不可是成员函数?
我觉得没问题呀...
答:
如果是
重载
双目操作符(即为类
的成员函数
),就只要设置一个参数作为右侧
运算
量,而左侧运算量就是对象本身。。。而 >> 或<< 左侧运算量是 cin或cout 而不是对象本身,所以不满足后面一点。。。就只能申明
为友元函数
了。。。如果一定要声明为
成员函数,
只能成为如下的形式:ostream & operator<<(os...
为什么
在
C++中
对赋值号“=”
的重载
只能使用
成员函数
而
不可以
使用
友元函
...
答:
此时假说如apple中有指针类型的成员变量,这时就存在两个指针指向同一块内存区域的问题,极易造成内存泄漏,此时需要对赋值运算符进行
重载,
例如:apple& apple::operator = (const apple & ap){xxxxxx},那么,假如将赋值
运算符重载为友元
形式,那么一些非左值(比如常量)会被编译器隐式转换成一个临时...
大家正在搜
在成员函数中进行双目运算符重载时
运算符中不能重载的是
下列运算符中不能重载的是
不能重载运算符的函数
不可被重载的运算符
不能参与重载的运算符是
python中加法运算符的重载
下列函数中不能重载的
c++重载运算符
相关问题
为什么C++重载赋值运算符 必须要用成员函数 而不能用普通或...
为什么赋值运算符只能作为成员函数进行重载,而不能作为友元函数...
为什么在C++中对赋值号“=”的重载只能使用成员函数而不可以...
C++运算符重载为成员函数、友元函数问题
C++中不能被友元函数重载的运算符是:
求助,C++中为什么有些函数只能用成员函数重载,而有些函数则...
数组下标运算符[ ]为什么只能重载为类成员函数,而不能重载为...
C++规定有四个运算符=->[]()不能重载为友员函数 <可...