当前位置: 首页 > 知识库问答 >
问题:

如何理解引用ref限定符的成员函数的报价?

汝彭薄
2023-03-14

根据文件,上面说

在重载解析期间,类X的非静态cv限定成员函数被视为一个函数,如果它没有ref限定符或具有左值ref限定符,则该函数将左值引用类型的隐式参数带到cv限定X。否则(如果它有rvalue ref限定符),它将被视为一个函数,将rvalue reference类型的隐式参数作为cv限定的X。

问题:

没有任何ref限定符的成员函数如何?它们将被视为使用左值限定符隐式声明的函数。我说得对吗?

2、为什么仅限于非静态cv限定成员函数(即见粗体文本),而非非静态成员函数?它们之间有什么区别?

共有1个答案

衡翰藻
2023-03-14

.没有任何ref限定符的成员函数如何?

这在你引用的声明中有答案。特别是(请注意下面引用的声明中的粗体部分),

在重载解析过程中,类X的非静态cv限定成员函数被视为一个函数,如果它没有ref限定符,则该函数会将类型为左值引用的隐式参数带到cv限定X。。。

这意味着对于没有任何ref限定符的非静态const限定成员函数,在重载解析期间,它们被视为具有const X类型的隐式对象参数

为什么仅限于非静态cv限定成员函数

它仅限于非静态成员函数,因为静态成员函数不使用此指针。也就是说,它们(静态成员函数)不在对象上调用。换句话说,它们没有与之关联的指针。

 类似资料:
  • 这是我上一篇文章的后续文章 参考非静态成员函数 在下面 const-、vole-和ref限定的成员函数 非静态成员函数可以在没有ref限定符的情况下声明,...在重载解析期间,X类的非静态cv限定成员函数被处理如下: 无ref限定符:隐式对象参数具有对cv限定X的类型左值引用,并且还允许绑定右值隐式对象参数 为了进一步探索这一点,我试用了上面链接中提供的源代码,如下所示: 我已经在每个基于引用限定

  • 如果没有其他重载(比如,

  • 考虑示例,示例的结果超出了我对一些相关规则的理解。 对于,它格式错误,因为它违反了以下规则,即: dcl.init.ref#5.2 否则,如果引用是对非const限定或易失性限定类型的左值引用,则程序格式错误。 这意味着,对常量T的左值引用不能绑定到任何右值,即使它们是引用兼容的<代码>AB=std::移动(A)显然违反了这条规则,因此它的格式不正确。 但是我不知道为什么要编译

  • 条款 17:理解特殊成员函数函数的生成 在C++术语中,特殊成员函数是指C++自己生成的函数。C++98有四个:默认构造函数函数,析构函数,拷贝构造函数,拷贝赋值运算符。这些函数仅在需要的时候才生成,比如某个代码使用它们但是它们没有在类中声明。默认构造函数仅在类完全没有构造函数的时候才生成。(防止编译器为某个类生成构造函数,但是你希望那个构造函数有参数)生成的特殊成员函数是隐式public且inl

  • 本文向大家介绍浅析成员函数和常成员函数的调用,包括了浅析成员函数和常成员函数的调用的使用技巧和注意事项,需要的朋友参考一下 在Coordinate类中,有一个Display()成员函数和一个Display() const常成员函数,代码如下 Display()成员函数和一个Display() const常成员函数是互为重载的,那么如果我们直接像下面这样调用该方法,会调用的是哪个呢? 那么运行下程序

  • 以下代码不编译,没想到: 我的理解是,临时不能绑定到