首页 > 其他分享 >尾置const:参数列表相同却重载的函数

尾置const:参数列表相同却重载的函数

时间:2023-04-06 18:57:57浏览次数:32  
标签:const 函数 列表 operator 尾置 重载

观察下面两个函数,它们具有相同的参数列表,貌似无法重载:

  1.      string& operator[](size_t n) {

return elements[n];

}

  2.      const string& operator(size_t n) const {

return elements[n];

}

但实际上,函数2的尾置const使得对*this进行了筛选,于是:

当非const对象调用时,匹配1;

而const对象调用时,匹配2;

从而实现了重载。

 

ps:函数1,2事实上实现了下标运算符常量版本与非常量版本的重载。

 

标签:const,函数,列表,operator,尾置,重载
From: https://www.cnblogs.com/abc---/p/17293773.html

相关文章

  • 49、K8S-调度机制-拓朴调度-topologySpreadConstraints
    1、基础知识1.1、回顾我们知道,对于pod来说,其在定义pod亲和性和反亲和的时候,有一个topologyKey的属性,但是默认情况下,pod的亲和性调度,仅仅针对单一的拓扑场景,也就是说,要么所有的pod都在这里,要么所有的pod都不要在这里,这样会导致,应用过于集中,反而导致物理资源的浪费。那么我们希......
  • 重载成员访问运算符
    #include<iostream>usingstd::cout;usingstd::endl;classData{public:Data(intdata=0):_data(data){cout<<"Data(int=0)"<<endl;}intgetData()const{return_data;......
  • JavaScript之函数,变量作用域,let(局部变量),const(常量)
    一.函数方法:面向对象特有的,它是对象的一部分,一个对象包含属性和方法函数:它的功能类似于方法,但是函数的写法是直接与类文件一体的,方法是包含在类文件中的,函数和类文件是一级目录JavaScript中的函数是包含在函数的定义方式一般用 function 来声明所有函数,他不同于其它高级语......
  • 【C++学习笔记】关于const int* 、 int const * 、 int* const
    constint*、intconst*、int*const的关键点在于const与*的位置,而const与类型int的位置无关,可以随意调换,属于个人代码风格,不过建议写成constint*,方便直观。constint*与int*const的区别在于const修饰的是int*还是变量,其中constint*a修饰的是int*,表示这个......
  • A Theory of Usable Information Under Computational Constraints
    目录概符号说明Motivation\(\mathcal{V}\)-informationSpecialCasesShannonentropyMeanabsolutedeviationnullMaximumShannonentropyDetermination其它性质MonotonicityNon-NegativityIndependenceXuY.,ZhaoS.,SongJ.,StewartR.andErmonS.Atheoryofusablei......
  • mutable、const、volatile关键字
    C++中有三种修饰数据可变的关键字:mutable、const、volatile。constconst我们很常见,在定义一些不可变的常量或不修改数据内容的函数时经常会用到。 修饰变量,说明该变量不可以被改变;修饰指针,分为指向常量的指针(例如constchar*,其自身可变,指向的是常量字符数组)和自身是常量的......
  • C++编程语言中赋值运算符重载函数(operator=)介绍
    参考资料:C++编程语言中赋值运算符重载函数(operator=)介绍_operator==_liitdar的博客-CSDN博客本文主要介绍C++编程语言中赋值运算符重载函数(operator=)的相关知识,同时通......
  • 用const修饰指针
    1)常量指针语法:const数据类型*变量名;不能通过解引用的方法修改内存地址中的值(用原始的变量名是可以修改的)。注意:l 指向的变量(对象)可以改变(之前是指向变量a的,后来可......
  • const在c语言和c++中的区别
    1.c语言中的const变量 c语言中const变量是只读变量,有自己的存储空间2.c++中的const常量可能分配存储空也可能不分配存储空间当const常量为全局,并且需要......
  • const对象分析
    const定义一个常量,常量定义以后就不能被修改。1classA{2public:3inta;4int*b;5int&c;6A():a(1),b(newint(1)),c(*newint(1)){......