我在这里剪掉了我的课程中不相关的部分。我不知道我在做什么错,只是试图能够对对象产生影响。试图超载cout <<运算符但它不起作用
#include <iostream>
class Snipped
{
public:
friend std::ostream& operator<<(std::ostream& os, const Snipped& s);
protected:
private:
};
std::ostream& operator<<(std::ostream& os, const Snipped& s)
{
os << "test";
return os;
}
int main(int argc, char* argv[])
{
Snipped* s = new Snipped();
std::cout << s << std::endl << s;
delete s;
return 0;
}
预期输出:
test
test
实际输出:
0x12ae20
0x12ae20 (random memory location?)
你可能意指'='而不是'==',我希望这个例子仅用于演示用法。如果超载复制分配,我宁愿推荐[复制和交换成语](http://stackoverflow.com/questions)/3279543/what-the-copy-and-swap-idiom)而不是身份检查的开销。 – 2012-01-31 06:45:40
@Als thx修复 – kfmfe04 2012-01-31 06:53:17