如果我想像这样使用某物,我必须重载哪个运算符?
MyClass C;
cout<< C;
我的类(class)的输出是字符串。
最佳答案
如果你要重载operator<<
作为:
std::ostream& operator<<(std::ostream& out, const MyClass & obj)
{
//use out to print members of obj, or whatever you want to print
return out;
}
如果这个函数需要访问MyClass
的私有(private)成员, 那么你必须做到 friend
的 MyClass
,或者,您可以将工作委托(delegate)给类的某些公共(public)函数。
例如,假设您将一个点类定义为:
struct point
{
double x;
double y;
double z;
};
然后你可以重载operator<<
作为:
std::ostream& operator<<(std::ostream& out, const point & pt)
{
out << "{" << pt.x <<"," << pt.y <<"," << pt.z << "}";
return out;
}
您可以将其用作:
point p1 = {10,20,30};
std::cout << p1 << std::endl;
输出:
{10,20,30}
希望对您有所帮助。
关于c++ - 我必须重载哪个运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7461793/