gpt4 book ai didi

c++ - 奇怪的运算符重载, "operator T& () const noexcept { return *_ptr; }"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:56 27 4
gpt4 key购买 nike

我研究了一下,operator函数的格式是

(return value)operator[space]op(arguments){implementation}

但是,在 std::reference_wrapper实现中,有一个运算符重载函数声明为 operator T& () const noexcept { return *_ptr;

这个运算符和 T& operator () const noexcept { return *_ptr; 不同吗? } ?.如果两者不同,那么第一个有什么用?

最佳答案

运算符 T& () const noexcept; 是一个 user-defined conversion function . std::reference_wrapper 拥有它是为了让您在不更改语法的情况下访问存储的引用:

int x = 42;
int &a = x;
std::reference_wrapper<int> b = x;

std::cout << a << " " << b << std::endl;

Assignment is a little bit trickier .


T& operator () const noexcept; 是尝试声明operator(),但由于缺少参数列表而无法编译。正确的语法是:

T& operator ()( ) const noexcept;
// ^
// parameters here

usage is completely different .

关于c++ - 奇怪的运算符重载, "operator T& () const noexcept { return *_ptr; }",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180908/

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