gpt4 book ai didi

c++ - 使用非成员函数重载运算符

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

这个问题的答案似乎让我难以理解,但是您如何着手使用非成员函数进行重载。您是否只是创建一个程序级函数,并且在原型(prototype)(或定义)存在的任何地方都为该类类型重载运算符?

最佳答案

有了成员函数,this将是左侧参数,这意味着您的运算符只有一个参数(对于一元运算符,则没有)。对于独立函数,您必须分别为二元或一元运算符提供两个或一个参数。

一个很好的例子是 <<流运算符:

class T;

// ...

std::ostream & operator<<(std::ostream &os, const T &val)
{
// ...
return os;
}

在这里,os是左侧参数,val是右手边的那个。

至于“where”,运算符必须在你使用它的地方定义。通常,将它们与要为其重载运算符的类型放在同一位置。

编辑:

对于非平凡的运算符(原始类型的算术运算),运算符是函数调用的语法糖。当您这样做时:

std::cout << "Hello";

就像这样写:

operator<<(std::cout, "Hello");

但更具可读性。

对于成员运算符,左边的参数将为this (这就是为什么成员运算符少了一个参数)。

关于c++ - 使用非成员函数重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762420/

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