运算符"<<"到指针

fti*_*sem 4 c++ pointers operator-overloading

我有一个类Terminallog,它重载<<运算符.如果我做以下事情

Terminallog clog(3);
clog << "stackoverflow.com is cool" << endl;
Run Code Online (Sandbox Code Playgroud)

一切正常."stackoverflow.com很酷"以漂亮的彩色方式打印到屏幕上,这正是Terminallog应该做的事情.

现在我试试

Terminallog* clog = new Terminallog(3);
clog << "stackoverflow.com is cool" << endl;
Run Code Online (Sandbox Code Playgroud)

这给了我一个编译器错误:

error: invalid operands of types ‘Terminallog*’ and ‘const char [5]’ to binary ‘operator<<’
Run Code Online (Sandbox Code Playgroud)

我可以看到将"<<"运算符传递给指针是一个问题,但是如何获得与非指针版本相同的行为?我可以简单地取消引用指针,但这会创建一个对象的本地副本(这对性能没有好处不是吗?)

因此我想知道这样做的正确方法是什么?

提前致谢

ftiaronsem

tem*_*def 8

取消引用指向写入的指针

*clog << "My message" << endl;
Run Code Online (Sandbox Code Playgroud)

没有创造对准了对象的副本.通常,指针解引用不会复制,并且复制的唯一方法是显式创建一个,通过值将对象传递给函数,或者按值从函数返回一个对象.带有指针取消引用的上述代码可能就是你要找的东西.