myclass
是我写的C ++类,当我写的时候:
myclass x;
cout << x;
如何输出10
或20.2
,如integer
或float
值?
Answers:
通常通过operator<<
为您的课程重载:
struct myclass {
int i;
};
std::ostream &operator<<(std::ostream &os, myclass const &m) {
return os << m.i;
}
int main() {
myclass x(10);
std::cout << x;
return 0;
}
const myclass &m
代替myclass const &m
吗?
const
在类型之后加上:m is a reference to a const myclass
。有了它的类型之前,它说:“米是一个MyClass的const`,这是正确的意义和真正不通的不规则的边缘提供参考。
您需要重载<<
运算符,
std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
os << obj.somevalue;
return os;
}
然后,当您执行此操作时cout << x
(在您的情况下x
为type myclass
),它将输出您在方法中告诉您的内容。在上面的示例中,它将是x.somevalue
成员。
如果不能将成员的类型直接添加到中ostream
,则您需要<<
使用与上述相同的方法来重载该类型的运算符。
这很简单,只需实现:
std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
os << foo.var;
return os;
}
您需要返回对os的引用才能链接输出(cout << foo << 42 << endl)
选择:
struct myclass {
int i;
inline operator int() const
{
return i;
}
};
myclass
有任何private
字段,并且要operator<<()
输出它们,myclass
则应声明std::ostream& operator<<(std::ostream&, myclass const&)
为好友。