friend ostream &operator<<(ostream &os, const CSnmpMaintenanceSwitch &sw);
答案 0 :(得分:1)
嗯,这意味着它存在一个运算符&lt;&lt; (当然在全局命名空间或当前类的命名空间中)采用ostream和amp;作为第一个参数和一个const CSnmpMaintenanceSwitch&amp;作为第二个参数,此运算符可以访问当前类的私有成员(当然是CSnmpMaintenanceSwitch)
答案 1 :(得分:0)
字面上?它是一个独立<<
运算符的声明,其左侧为ostream
,右侧为CSnmpMaintenanceSwitch
。该表达式产生ostream
引用。
语义?它是一个流插入操作符。你知道怎么说std::cout << someString;
吗?嗯,那是因为在某个地方,有一个声明ostream& operator<<(ostream& os, const string &str);
。几乎可以在CSnmpMaintenanceSwitch
类中找到您要询问的行,并为该运算符提供输出其中一个对象所需的访问权限。所以现在你也可以说std::cout << mySnmpMaintenanceSwitch;
。
答案 2 :(得分:0)
此行声明operator<<
,它带有两个参数:对实例std::ostream
的引用和对CSnmpMaintenanceSwitch
实例的常量引用。它允许您将有关CSnmpMaintenanceSwitch
实例的一些信息写入输出流,如
operator<< ( std::cout , CSnmpMaintenanceSwitchInstance );
或
std::cout << CSnmpMaintenanceSwitchInstance;
运营商声明为friend
,因此可以访问CSnmpMaintenanceSwitch
的私人和受保护成员。
第一个参数被声明为非常量引用,因为应该修改输出流(一些数据将写入它),默认性质为oeprator<<
。
第二个参数被声明为常量引用,因为operator<<
不应该更改它(默认情况下)。
答案 3 :(得分:0)
将其声明为friend
的原因是您可能希望直接访问并在重载运算符中使用某些私有变量。
因为您将对象CSnmpMaintenanceSwitch
设为constant reference
,所以可以保证它不会修改私有数据