gpt4 book ai didi

c++ - 如何重载 << 运算符?

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:01 24 4
gpt4 key购买 nike

我打算在 m_logger<<"hello"<<"world" 时调用函数叫做。 m_logger 是流类型。

所以我决定用下面的签名重载<<

friend ofstream& operator<<(ofstream &stream,char *str);

但是 vc 编译器给出了以下错误:

error C2666: 'operator <<' : 6 overloads have similar conversions

有没有其他方法可以做到这一点,我的目标是将所有对 ofstream 对象的写操作转移到不同的函数?

创建我自己的 calss 对象对我有用,但是我怎样才能让它像普通的 ofstream 对象一样工作,它将所有系统定义的类型转换为字符串或 char*。我知道一种方法是使每种类型的运算符过载,但有没有一种更简洁的方法

最佳答案

“重载”不是“覆盖”。您可以为不同类型的参数重载函数或运算符;您不能用自己的实现覆盖现有函数或运算符(除了覆盖虚函数,这显然非常不同)。唯一的异常(exception)是 operator newoperator delete,它们可以覆盖内置的。

关于c++ - 如何重载 << 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com