gpt4 book ai didi

c++ - 在 C++ 中,如果两个对象都重载运算符 << 会发生什么?一个<<乙

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:36 25 4
gpt4 key购买 nike

我以为在

cout << "Hello world" 

cout对象有一个运算符重载,所以我们可以传递 strings进入cout对象成员函数。

但在某些示例代码中,我看到一个类中定义了运算符重载。

class GenericPlayer : public Hand
{
..
friend ostream& operator <<(ostream& os, const GenericPlayer& aGenericPlayer);
..
};

...
cout << aGenericPlayer << endl;
...

即使不是,如果两者都怎么办coutaGenericPlayer过载 operator<<

最佳答案

Even if it is not, what if both cout and aGenericPlayer overload operator<< ?

std::cout是一个 std::ostream对象,所以任何 std::ostream& operator<<(std::ostream, SomeType)将与 std::cout 一起工作.但关键是运算符的第二个参数不同,所以重载不同。第一个“字符串”是这样的

std::ostream& operator<<(std::ostream&, const char*);

第二个

std::ostream& operator <<(std::ostream& os, const GenericPlayer& aGenericPlayer); 

所以,它们是不同的运算符重载,没有歧义。

关于c++ - 在 C++ 中,如果两个对象都重载运算符 << 会发生什么?一个<<乙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809747/

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