gpt4 book ai didi

c++ - 在 C++ 中使用运算符重载

转载 作者:行者123 更新时间:2023-11-30 00:59:34 25 4
gpt4 key购买 nike

class A
{
public:
ostream& operator<<(int string)
{
cout << "In Overloaded function1\n";
cout << string << endl;
}
};

main()
{
int temp1 = 5;
char str = 'c';
float p= 2.22;
A a;
(a<<temp1);
(a<<str);
(a<<p);
(a<<"value of p=" << 5);
}

我希望输出为:p=5 的值

应该做的更改...并且函数应该接受传递的所有数据类型

最佳答案

有2种解决方案。

第一个解决方案是将其设为模板。

            template <typename T>
ostream& operator<<(const T& input) const
{
cout << "In Overloaded function1\n";
return (cout << input << endl);
}

但是,这将使 a << stra << p打印 c2.22 ,这与您的原始代码不同。那个输出 992 .

第二种解决方案是简单地为 const char* 添加一个重载函数:

            ostream& operator<<(int  string)
{
cout << "In Overloaded function1\n";
return (cout << string << endl);
}

ostream& operator<<(const char* string)
{
cout << "In Overloaded function1\n";
return (cout << string << endl);
}

这允许 C 字符串和所有可转换为 int 的内容成为A << 'ed,但仅此而已 — 它不会“接受传递的所有数据类型”。


顺便说一句,你忘了return ostream .

关于c++ - 在 C++ 中使用运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4181958/

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