gpt4 book ai didi

c++ - 在 C++ 中,重载运算符后,运算符是否会失去其旧功能?

转载 作者:行者123 更新时间:2023-11-30 02:58:46 25 4
gpt4 key购买 nike

当我重载一个运算符时,它是否失去了对它之前定义的类型进行运算的能力,或者新定义是否仅在我调用时应用

cout << that_specific_class_type_variable

如果我写 cout << that_specific_class_type_variabe->Left()是重载函数还是普通的 cout 语句?

ostream& operator<< (ostream& out, TreeNode* tptr) 
{
if(tptr!=NULL)
{
operator<<(out,tptr->Left());
out<<(*(tptr->Entry()));
operator<<(out,t->Right());
}
return out;
}

最佳答案

它只会改变它重载的特定类型的行为,在你的例子中,TreeNode * .现有版本的运算符将继续正常运行。

对于递归调用:如果Left,它将使用您对运算符的新定义。和 Right类型为 TreeNode * (或指向派生自 TreeNode 的类的指针)。如果它们属于不同类型,则将使用默认版本的运算符。

我怀疑Entry()返回类型不同于 TreeNode * 的对象.在这种情况下,operator<< 的标准定义将应用于它。

关于c++ - 在 C++ 中,重载运算符后,运算符是否会失去其旧功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504814/

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