【问题标题】:const &, const &&, &, && after a function?const &, const &&, &, && 在函数之后?
【发布时间】:2021-12-23 14:21:41
【问题描述】:

我现在正在查看一些内部基础架构代码,我看到了一些这样定义的函数:

// func_name is a class member function

some_return_type func_name() & {
  // definition
}

some_return_type func_name() && {
  // definition
}

some_return_type func_name() const& {
  // definition
}

some_return_type func_name() const&& {
  // definition
}

我知道在类成员函数名称之后有const 意味着它不会修改类中定义的不可变成员变量。但是这里的&&&const &const && 变体是什么意思?

【问题讨论】:

标签: c++ class


【解决方案1】:

使用self作为调用方法的对象:

  1. self 必须匹配 Type&:

    some_return_type func_name() &;
    
  2. self 必须匹配 Type&&(也将匹配 Type const&&Type const&):

    some_return_type func_name() &&;
    
  3. self 必须匹配 Type const&&(也将匹配 Type const&):

    some_return_type func_name() const&&;
    
  4. self 必须匹配 Type const&:

    some_return_type func_name() const&;
    

如您所见,如果 C++ 从一开始就有引用,并且选择 self-references 而不是 this-pointers,这将更容易理解。

Cppreference.com on ref-qualified member-functions.

【讨论】:

  • 你能参考谈到这些的标准吗?他们叫什么?
  • 我也很想知道这个功能的通用名称是什么。我想详细了解它
  • 它不会比 ref 限定的成员函数更好(具有 cv 限定的成员函数的侧序)。
猜你喜欢
  • 2011-07-27
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多