从品牌网站建设到网络营销策划,从策略到执行的一站式服务
今天看到流运算符重载的时候有几个疑问,一是为何在只需声明一次friend即可,而不是在两个类之间都使用friend,二是为何不能重载为成员函数。
创新互联建站专注于镇宁企业网站建设,响应式网站建设,商城网站建设。镇宁网站建设公司,为镇宁等地区提供建站服务。全流程按需策划设计,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
第一个问题:都使用friend,函数需要访问两个类的私有成员
第二个问题:重载为了成员函数,但应用上出现了问题,详情见代码。
using std::ostream; class a { public: ostream& operator<< (ostream & out) { out << x << y; return out; } friend ostream & operator<<(a & rhs, ostream & xout) { xout << rhs.x << rhs.y; return xout; } a(int s = 0, int q = 1) :x(s), y(q) { } private: int x; int y; }; int main() { a b; // b.operator<<(std::cout); //类的成员流运算符 // std::cout << b; //friend 流运算符重载 // b << std::cout; //friend 流运算符重载 或 成员流运算符的另一种形式 // operator<<(b, std::cout); //普通函数 /*第一种<<的实现对1,3输出均适用, 1. 作为a类的成员函数 2. 1不可以写为2 3. 1可以写为3 4. operator<< 函数未实现 第二种<<的实现对3,4适用 1. operator<<是普通函数,而非a的成员函数 2. 位置反了 3. 使用流运算符时,第一个参数在前 4. 普通函数的使用,函数名加参数 */ return 0; }
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图